Last modified by Artur K. on 2026/05/29 14:28

From version 1.1
edited by Helena K.
on 2026/01/16 11:45
Change comment: There is no comment for this version
To version 2.1
edited by Artur K.
on 2026/05/29 14:28
Change comment: Copied from sdmxsrlocalization:Methodology.Guidelines on Non-Calendar Year Reporting of Data.WebHome

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.helena
1 +xwiki:XWiki.arturkryazhev
Content
... ... @@ -4,7 +4,7 @@
4 4  
5 5  = 1. Problem statement =
6 6  
7 -In many cases, data that are exchanged in SDMX data messages do not relate to the calendar year.  However, many statistical system implementations require that data are mapped to and stored as the real calendar.
7 +In many cases, data that are exchanged in SDMX data messages do not relate to the calendar year. However, many statistical system implementations require that data are mapped to and stored as the real calendar.
8 8  
9 9  This guideline provides recommendations for the following four use cases of such non-calendar year data:
10 10  
... ... @@ -18,32 +18,17 @@
18 18  
19 19  It is also required to take into account reporting frequencies other than annual (e.g. quarterly, monthly). The use cases lined out above can be visualised graphically. Note that, in this example, all time spans would use the year 2015 (“2015” or “2015-A1”) as the reference year in reporting:
20 20  
21 -| |A|(% colspan="12" %)2014|(% colspan="12" %)2015|(% colspan="12" %)2016
22 -|Case|Q|(% colspan="3" %)1|(% colspan="3" %)2|(% colspan="3" %)3|(% colspan="3" %)4|(% colspan="3" %)1|(% colspan="3" %)2|(% colspan="3" %)3|(% colspan="3" %)4|(% colspan="3" %)1|(% colspan="3" %)2|(% colspan="3" %)3|(% colspan="3" %)4
23 -|1| | | | | | | | | | | | | |(% colspan="12" %) | | | | | | | | | | | |
24 -|2a| | | | | | | | | | | | | | | | | | | | | |(% colspan="12" %) | | | |
25 -|2b| | | | | | | | | | | | | | | | | | | |(% colspan="12" %) | | | | | |
26 -|3| | | | | | | | | | | | | | | | |5+|(% colspan="11" %) |-4| | | | | | | |
27 -|4| | | | | | | |(% colspan="12" %) | | | | | | | | | | | | | | | | | |
28 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
21 +[[image:1768553211015-575.png]]
29 29  
23 +Assuming that the time dimension has the ID TIME_PERIOD, case 1 could use TIME_PERIOD=”2015”. All other cases would need to use the notation TIME_PERIOD=”2015-A1”. For the rest of the document we use the more general notation “2015-A1”.{{footnote}}The YYYY format is reserved for Gregorian years, i.e. from January 1 to December 31. For reporting years that are not Gregorian years, the format YYYY-A1 (e.g. 2016-A1) must be used for the time dimension.{{/footnote}}
30 30  
31 -
32 -Assuming that the time dimension has the ID TIME_PERIOD, case 1 could use TIME_PERIOD=”2015”. All other cases would need to use the notation TIME_PERIOD=”2015-A1”. For the rest of the document we use the more general notation “2015-A1”. [[~[1~]>>path:#_ftn1]]
33 -
34 34  For quarterly or monthly data, the first period of the reporting year would also need to be read as relative to the start of the reporting year. Here are examples for case 2 if the data is quarterly (2a) or monthly (2b):
35 35  
36 -| |A|(% colspan="12" %)2014|(% colspan="15" %)2015|(% colspan="14" %)2016
37 -|Case|Q|(% colspan="3" %)1|(% colspan="3" %)2|(% colspan="3" %)3|(% colspan="3" %)4|(% colspan="3" %)1|(% colspan="3" %)2|(% colspan="5" %)3|(% colspan="4" %)4|(% colspan="4" %)1|(% colspan="4" %)2|(% colspan="3" %)3|(% colspan="3" %)4
38 -|2a| | | | | | | | | | | | | | | | | | | |(% colspan="2" %) |(% colspan="2" %) |(% colspan="4" %)Q1|(% colspan="4" %)Q2|(% colspan="4" %)Q3|(% colspan="3" %)Q4| | | |
39 -|2b| | | | | | | | | | | | | | | | | | | |1|(% colspan="2" %)2|(% colspan="2" %)3|.|.|(% colspan="2" %).| | |(% colspan="2" %) | | |(% colspan="2" %) | | | | | |
40 -| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
27 +[[image:1768553250696-532.png]]
41 41  
42 -
43 -
44 44  Note that in case 2a, the third quarter of reporting year 2015 (TIME_PERIOD=2015-Q3) is covering data from March until June 2016. In case 2b, the seventh month of reporting year 2015 (TIME_PERIOD=2015-M07) is covering data for January 2016.
45 45  
46 -It is clear in the graphical view that time series under case 2b should not be directly compared with time series under case 4. If it is required to compare figures of the same time period, the 2015 observation of the type 2b series is compared with the 2016 figure of the type 4 series. Comparing a 2a series with others from the example may be more complicated, because exact alignment of the timelines might not be possible without additional data. It is possible to estimate aligned timelines by doing a time transformation using formulas; for instance, shifting the time series to comply with the calendar year. The methodological aspects of time transformation are not part of these guidelines. For coding the results of such transformations, please refer to the guidelines on coding time transformations in SDMX[[~[2~]>>path:#_ftn2]].
31 +It is clear in the graphical view that time series under case 2b should not be directly compared with time series under case 4. If it is required to compare figures of the same time period, the 2015 observation of the type 2b series is compared with the 2016 figure of the type 4 series. Comparing a 2a series with others from the example may be more complicated, because exact alignment of the timelines might not be possible without additional data. It is possible to estimate aligned timelines by doing a time transformation using formulas; for instance, shifting the time series to comply with the calendar year. The methodological aspects of time transformation are not part of these guidelines. For coding the results of such transformations, please refer to the guidelines on coding time transformations in SDMX{{footnote}}https://sdmx.org/wp-content/uploads/SWG_TimeTransformation_V1.0.docx{{/footnote}}.
47 47  
48 48  = 2. SDMX Concepts for Non-Calendar Year Series =
49 49  
... ... @@ -51,7 +51,7 @@
51 51  
52 52  In SDMX messages, the time period concept (concept ID TIME_PERIOD) specifies the **reporting period**. This reporting period, as outlined above, is in many cases not aligned with the calendar year.
53 53  
54 -To specify the calendar period that a reporting period is covering, the SDMX technical standard already defines an attribute “reporting year start” on series level with format xs:gMonthDay[[~[3~]>>path:#_ftn3]]. It gives a day and month when the reporting year starts. It is optional and if not provided the default is 1^^st^^ January. Using this attribute can cover cases 1, 2 and 3 from above. When added to a series, the attribute will specify on which day of the calendar year the reporting year starts.
39 +To specify the calendar period that a reporting period is covering, the SDMX technical standard already defines an attribute “reporting year start” on series level with format xs:gMonthDay{{footnote}}https://sdmx.org/wp-content/uploads/SDMX_2-1-1-SECTION_6_TechnicalNotes-march-2013.pdf, row 658.{{/footnote}}. It gives a day and month when the reporting year starts. It is optional and if not provided the default is 1^^st^^ January. Using this attribute can cover cases 1, 2 and 3 from above. When added to a series, the attribute will specify on which day of the calendar year the reporting year starts.
55 55  
56 56  This is not sufficient to cover case 4, because in this case the reporting year 2015 starts in 2014. In order to specify this case, a different attribute “reporting year end” should be used. It is also on series level with format xs:gMonthDay and gives a day and month when the reporting year ends. It is optional and if not provided the default is 31^^st^^ December.
57 57  
... ... @@ -61,7 +61,8 @@
61 61  
62 62  == //ISO 8601 time interval// ==
63 63  
64 -As outlined above, in some cases reporting periods might not have the same duration as calendar periods. A crop year in agriculture may only last for a couple of months. To specify these periods on a more granular level, the SDMX technical standard suggests using the time intervals as defined by ISO 8601. ISO specifies four ways to express a time interval[[~[4~]>>path:#_ftn4]]:
49 +As outlined above, in some cases reporting periods might not have the same duration as calendar periods. A crop year in agriculture may only last for a couple of months. To specify these periods on a more granular level, the SDMX technical standard suggests using the time intervals as defined by ISO 8601. ISO specifies four ways to express a time interval{{footnote}}http://www.iso.org/iso/home/standards/iso8601.htm and
50 +https://sdmx.org/wp-content/uploads/SDMX_2-1-1-SECTION_6_TechnicalNotes-march-2013.pdf, row 749.{{/footnote}}:
65 65  
66 66  1. Start and end, such as "2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
67 67  1. Start and duration, such as "2007-03-01T13:00:00Z/P1Y2M10DT2H30M"
... ... @@ -68,8 +68,6 @@
68 68  1. Duration and end, such as "P1Y2M10DT2H30M/2008-05-11T15:30:00Z"
69 69  1. Duration only, such as "P1Y2M10DT2H30M", with additional context information
70 70  
71 -
72 -
73 73  An attribute time range (ID:TIME_RANGE) is suggested at the observation level to specify further in which particular time range a specific observation was collected. The series will still specify when the reporting period starts or ends for the whole series and each observation can have a specific time range within that reporting period. It is suggested for that case to use only option 1, the start and end date, and not the other options in SDMX context.
74 74  
75 75  = 3. Example 1: Based on National Accounts data exchange =
... ... @@ -82,49 +82,47 @@
82 82  
83 83  The code list for “reference period detail” previously used in the National Accounts DSDs is as follows:
84 84  
85 -|**Code**|**Description**
86 -|C|Calendar year
87 -|F_O|Fiscal year (other definition)
88 -|F02|Fiscal year starting in February
89 -|F03|Fiscal year starting in March
90 -|F04|Fiscal year starting in April
91 -|F05|Fiscal year starting in May
92 -|F06|Fiscal year starting in June
93 -|F07|Fiscal year starting in July
94 -|F08|Fiscal year starting in August
95 -|F09|Fiscal year starting in September
96 -|F10|Fiscal year starting in October
97 -|F11|Fiscal year starting in November
98 -|F12|Fiscal year starting in December
69 +|(% style="width:168px" %)**Code**|(% style="width:2050px" %)**Description**
70 +|(% style="width:168px" %)C|(% style="width:2050px" %)Calendar year
71 +|(% style="width:168px" %)F_O|(% style="width:2050px" %)Fiscal year (other definition)
72 +|(% style="width:168px" %)F02|(% style="width:2050px" %)Fiscal year starting in February
73 +|(% style="width:168px" %)F03|(% style="width:2050px" %)Fiscal year starting in March
74 +|(% style="width:168px" %)F04|(% style="width:2050px" %)Fiscal year starting in April
75 +|(% style="width:168px" %)F05|(% style="width:2050px" %)Fiscal year starting in May
76 +|(% style="width:168px" %)F06|(% style="width:2050px" %)Fiscal year starting in June
77 +|(% style="width:168px" %)F07|(% style="width:2050px" %)Fiscal year starting in July
78 +|(% style="width:168px" %)F08|(% style="width:2050px" %)Fiscal year starting in August
79 +|(% style="width:168px" %)F09|(% style="width:2050px" %)Fiscal year starting in September
80 +|(% style="width:168px" %)F10|(% style="width:2050px" %)Fiscal year starting in October
81 +|(% style="width:168px" %)F11|(% style="width:2050px" %)Fiscal year starting in November
82 +|(% style="width:168px" %)F12|(% style="width:2050px" %)Fiscal year starting in December
99 99  
100 -
101 -
102 102  Following this code list, the cases lined out in the problem statement could be coded as such:
103 103  
104 -1. Reporting year is equal to the calendar year
86 +1) Reporting year is equal to the calendar year
105 105  
106 106  <na_:Series **REF_PERIOD_DETAIL="C" **STO="B1G" REF_AREA="LU" FREQ="Q">
107 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
89 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
108 108  </na_:Series>
109 109  
110 110  
111 111  REF_PERIOD_DETAIL="C" à reporting year 1995 starts 1^^st^^ January 1995
112 112  
113 -1. Reporting year starts on the first day of a month different to January
95 +2) Reporting year starts on the first day of a month different to January
114 114  Example: fiscal year starting on the 1^^st^^ of July
115 115  
116 116  <na_:Series **REF_PERIOD_DETAIL="F07" **STO="B1G" REF_AREA="LU" FREQ="Q">
117 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
99 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
118 118  </na_:Series>
119 119  
120 120  
121 121  REF_PERIOD_DETAIL="F07" à reporting year 1995 starts 1^^st^^ July 1995 and Q1 projected on the calendar year goes from: 07-09/1995
122 122  
123 -1. Reporting year starts on a given day in the year
105 +3) Reporting year starts on a given day in the year
124 124  Example: tax year starting on the 5^^th^^ of April
125 125  
126 126  <na_:Series **REF_PERIOD_DETAIL="F04" **STO="B1G" REF_AREA="LU" FREQ="Q">
127 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
109 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
128 128  </na_:Series>
129 129  
130 130  
... ... @@ -131,17 +131,17 @@
131 131  REF_PERIOD_DETAIL="F04" à reporting year 1995 would start 1^^st^^ April 1995. The case is not solved because we do not know anymore that it should be on the 5^^th^^. Another option would be to use the “F_O” code:
132 132  
133 133  <na_:Series **REF_PERIOD_DETAIL="F_O" **STO="B1G" REF_AREA="LU" FREQ="Q">
134 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
116 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
135 135  </na_:Series>
136 136  
137 137  
138 138  REF_PERIOD_DETAIL="F_O" à reporting year 1995 has another definition. The case is only partly solved because we do not know the exact date. Additional metadata are needed and the reporting period cannot directly be parsed by a system.
139 139  
140 -1. Reporting year **ends** on a given day in the year
122 +4) Reporting year **ends** on a given day in the year
141 141  Example: fiscal year ending on the 30^^th^^ of June, equivalent to fiscal year starting on the 1^^st^^ of July Y-1
142 142  
143 143  <na_:Series **REF_PERIOD_DETAIL="??" **STO="B1G" REF_AREA="LU" FREQ="Q">
144 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
126 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
145 145  </na_:Series>
146 146  
147 147  
... ... @@ -151,43 +151,42 @@
151 151  
152 152  Using the attributes as suggested above, all cases outlined in the National Account examples can be fully covered:
153 153  
154 -1. Reporting year is equal to the calendar year
136 +1) Reporting year is equal to the calendar year
155 155  
156 156  <na_:Series **REF_PERIOD_DETAIL="C" REPYEARSTART="~-~-01-01"// //**STO="B1G" REF_AREA="LU" FREQ="Q">
157 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
139 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
158 158  </na_:Series>
159 159  
160 -
161 161  1995-Q1 is the same as the calendar definition: from 1^^st^^ January 1995 until 31^^st^^ March 1995. In this case, the attribute REPYEARSTART may be omitted, since it expressed the default value of 1^^st^^ January.
162 162  
163 -Reporting year starts on the first day of a month different to January
144 +2) Reporting year starts on the first day of a month different to January
164 164  Example: fiscal year starting on the 1^^st^^ of July
165 165  
166 166  <na_:Series **REF_PERIOD_DETAIL="F07" REPYEARSTART="~-~-07-01" **STO="B1G" REF_AREA="LU" FREQ="Q">
167 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
148 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
168 168  </na_:Series>
169 169  
170 170  Reporting period 1995-Q1 lasts in that case from 1^^st^^ July 1995 until 30^^th^^ September 1995.
171 171  
172 -1. Reporting year starts on a given day in the year
153 +3) Reporting year starts on a given day in the year
173 173  Example: tax year starting on the 5^^th^^ of April
174 174  
175 175  <na_:Series **REF_PERIOD_DETAIL="F04" REPYEARSTART="~-~-04-05" **STO="B1G" REF_AREA="LU" FREQ="Q">
176 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
157 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
177 177  </na_:Series>
178 178  
179 179  Reporting period 1995-Q1 lasts in that case from 5^^th^^ April 1995 until 4^^th^^ July 1995.
180 180  
181 -1. Reporting year **ends** on a given day in the year
162 +4) Reporting year **ends** on a given day in the year
182 182  Example: fiscal year ending on the 30^^th^^ of June, equivalent to fiscal year starting on the 1^^st^^ of July Y-1
183 183  
184 184  <na_:Series **REF_PERIOD_DETAIL="??" REPYEAREND="~-~-06-30" **STO="B1G" REF_AREA="LU" FREQ="Q">
185 - <na_:Obs  OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
166 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/>
186 186  </na_:Series>
187 187  
188 188  Reporting period 1995-Q1 lasts in that case from 1^^st^^ July 1994 until 30^^th^^ September 1994
189 189  
190 -1. Example 2: Based on Agriculture data exchange
171 += 4. Example 2: Based on Agriculture data exchange =
191 191  
192 192  == //Problem statement// ==
193 193  
... ... @@ -207,7 +207,6 @@
207 207  
208 208  Note that the DSD proposal below does not constitute a real usable DSD for agriculture statistics. It is heavily simplified to only include concepts that are relevant for the purpose of these guidelines. Also the SDMX fragments shown in the example are not syntactically correct. They just serve the purpose of explaining the issue and show the coding in a readable way (pseudo code).
209 209  
210 -
211 211  |**Concept ID**|**Description**|**Role**|**Code List / Format**
212 212  |**FREQ**|Frequency|Dimension|A (annual), S (Half-yearly)
213 213  |**REF_AREA**|Reference area|Dimension|IN (India), CN (China)
... ... @@ -262,15 +262,16 @@
262 262  
263 263  **Sample Data for China**
264 264  
265 -|**Crop year**|**Season**|**Calendar period**|**Units**
266 -|**2011**|Winter|Sep-Oct 2010|100 planted
267 -| | |May-Jun 2011|100 harvested
268 -| |Summer|Mar-Apr 2011|200 planted
269 -| | |Jul-Aug 2011|200 harvested
270 -|**2012**|Winter|Sep-Oct 2011|120 planted
271 -| | |May-Jun 2011|120 harvested
272 -| |Summer|Mar-Apr 2012|220 planted
273 -| | |Jul-Aug 2012|220 harvested
245 +(% style="width:918.446px" %)
246 +|(% style="width:121px" %)**Crop year**|(% style="width:165px" %)**Season**|(% style="width:191px" %)**Calendar period**|(% style="width:438px" %)**Units**
247 +|(% style="width:121px" %)**2011**|(% style="width:165px" %)Winter|(% style="width:191px" %)Sep-Oct 2010|(% style="width:438px" %)100 planted
248 +|(% style="width:121px" %) |(% style="width:165px" %) |(% style="width:191px" %)May-Jun 2011|(% style="width:438px" %)100 harvested
249 +|(% style="width:121px" %) |(% style="width:165px" %)Summer|(% style="width:191px" %)Mar-Apr 2011|(% style="width:438px" %)200 planted
250 +|(% style="width:121px" %) |(% style="width:165px" %) |(% style="width:191px" %)Jul-Aug 2011|(% style="width:438px" %)200 harvested
251 +|(% style="width:121px" %)**2012**|(% style="width:165px" %)Winter|(% style="width:191px" %)Sep-Oct 2011|(% style="width:438px" %)120 planted
252 +|(% style="width:121px" %) |(% style="width:165px" %) |(% style="width:191px" %)May-Jun 2011|(% style="width:438px" %)120 harvested
253 +|(% style="width:121px" %) |(% style="width:165px" %)Summer|(% style="width:191px" %)Mar-Apr 2012|(% style="width:438px" %)220 planted
254 +|(% style="width:121px" %) |(% style="width:165px" %) |(% style="width:191px" %)Jul-Aug 2012|(% style="width:438px" %)220 harvested
274 274  
275 275  == //Recommendations based on the Use Cases from Agriculture// ==
276 276  
... ... @@ -361,11 +361,4 @@
361 361  
362 362  ----
363 363  
364 -[[~[1~]>>path:#_ftnref1]] The //YYYY// format is reserved for Gregorian years, i.e. from January 1 to December 31. For reporting years that are not Gregorian years, the format YYYY-A1 (e.g. 2016-A1) must be used for the time dimension
365 -
366 -[[~[2~]>>path:#_ftnref2]] [[https:~~/~~/sdmx.org/wp-content/uploads/SWG_TimeTransformation_V1.0.docx>>url:https://sdmx.org/wp-content/uploads/SWG_TimeTransformation_V1.0.docx]]
367 -
368 -[[~[3~]>>path:#_ftnref3]] [[https:~~/~~/sdmx.org/wp-content/uploads/SDMX_2-1-1-SECTION_6_TechnicalNotes-march-2013.pdf>>url:https://sdmx.org/wp-content/uploads/SDMX_2-1-1-SECTION_6_TechnicalNotes-march-2013.pdf]], row 658
369 -
370 -[[~[4~]>>path:#_ftnref4]] [[http:~~/~~/www.iso.org/iso/home/standards/iso8601.htm>>url:http://www.iso.org/iso/home/standards/iso8601.htm]] and
371 -[[https:~~/~~/sdmx.org/wp-content/uploads/SDMX_2-1-1-SECTION_6_TechnicalNotes-march-2013.pdf>>url:https://sdmx.org/wp-content/uploads/SDMX_2-1-1-SECTION_6_TechnicalNotes-march-2013.pdf]], row 749.
345 +{{putFootnotes/}}
1768553162263-888.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.helena
Size
... ... @@ -1,0 +1,1 @@
1 +7.0 KB
Content
1768553211015-575.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.helena
Size
... ... @@ -1,0 +1,1 @@
1 +6.6 KB
Content
1768553250696-532.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.helena
Size
... ... @@ -1,0 +1,1 @@
1 +6.0 KB
Content
© Semantic R&D Group, 2026