Changes for page Guidelines on Non-Calendar Year Reporting of Data
Last modified by Artur K. on 2026/05/29 14:28
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -xwiki:XWiki. arturkryazhev1 +xwiki:XWiki.helena - 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 ... ... @@ -20,7 +20,7 @@ 20 20 21 21 [[image:1768553211015-575.png]] 22 22 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}}TheYYYY formatis reservedfor Gregorianyears, i.e. from January 1 to December 31. For reportingyears that are not Gregorianyears,the format YYYY-A1 (e.g.2016-A1)must be used for the time dimension.{{/footnote}}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”. [[~[1~]>>path:#_ftn1||style="background-color: rgb(255, 255, 255);"]] 24 24 25 25 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): 26 26 ... ... @@ -28,7 +28,7 @@ 28 28 29 29 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. 30 30 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}}.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[[~[2~]>>path:#_ftn2]]. 32 32 33 33 = 2. SDMX Concepts for Non-Calendar Year Series = 34 34 ... ... @@ -36,7 +36,7 @@ 36 36 37 37 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. 38 38 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.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[[~[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. 40 40 41 41 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. 42 42 ... ... @@ -46,8 +46,7 @@ 46 46 47 47 == //ISO 8601 time interval// == 48 48 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}}: 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[[~[4~]>>path:#_ftn4]]: 51 51 52 52 1. Start and end, such as "2007-03-01T13:00:00Z/2008-05-11T15:30:00Z" 53 53 1. Start and duration, such as "2007-03-01T13:00:00Z/P1Y2M10DT2H30M" ... ... @@ -54,6 +54,8 @@ 54 54 1. Duration and end, such as "P1Y2M10DT2H30M/2008-05-11T15:30:00Z" 55 55 1. Duration only, such as "P1Y2M10DT2H30M", with additional context information 56 56 56 + 57 + 57 57 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. 58 58 59 59 = 3. Example 1: Based on National Accounts data exchange = ... ... @@ -66,47 +66,49 @@ 66 66 67 67 The code list for “reference period detail” previously used in the National Accounts DSDs is as follows: 68 68 69 -| (% style="width:168px" %)**Code**|(% style="width:2050px" %)**Description**70 -| (% style="width:168px" %)C|(% style="width:2050px" %)Calendar year71 -| (% style="width:168px" %)F_O|(% style="width:2050px" %)Fiscal year (other definition)72 -| (% style="width:168px" %)F02|(% style="width:2050px" %)Fiscal year starting in February73 -| (% style="width:168px" %)F03|(% style="width:2050px" %)Fiscal year starting in March74 -| (% style="width:168px" %)F04|(% style="width:2050px" %)Fiscal year starting in April75 -| (% style="width:168px" %)F05|(% style="width:2050px" %)Fiscal year starting in May76 -| (% style="width:168px" %)F06|(% style="width:2050px" %)Fiscal year starting in June77 -| (% style="width:168px" %)F07|(% style="width:2050px" %)Fiscal year starting in July78 -| (% style="width:168px" %)F08|(% style="width:2050px" %)Fiscal year starting in August79 -| (% style="width:168px" %)F09|(% style="width:2050px" %)Fiscal year starting in September80 -| (% style="width:168px" %)F10|(% style="width:2050px" %)Fiscal year starting in October81 -| (% style="width:168px" %)F11|(% style="width:2050px" %)Fiscal year starting in November82 -| (% style="width:168px" %)F12|(% style="width:2050px" %)Fiscal year starting in December70 +|**Code**|**Description** 71 +|C|Calendar year 72 +|F_O|Fiscal year (other definition) 73 +|F02|Fiscal year starting in February 74 +|F03|Fiscal year starting in March 75 +|F04|Fiscal year starting in April 76 +|F05|Fiscal year starting in May 77 +|F06|Fiscal year starting in June 78 +|F07|Fiscal year starting in July 79 +|F08|Fiscal year starting in August 80 +|F09|Fiscal year starting in September 81 +|F10|Fiscal year starting in October 82 +|F11|Fiscal year starting in November 83 +|F12|Fiscal year starting in December 83 83 85 + 86 + 84 84 Following this code list, the cases lined out in the problem statement could be coded as such: 85 85 86 -1 )Reporting year is equal to the calendar year89 +1. Reporting year is equal to the calendar year 87 87 88 88 <na_:Series **REF_PERIOD_DETAIL="C" **STO="B1G" REF_AREA="LU" FREQ="Q"> 89 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 92 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 90 90 </na_:Series> 91 91 92 92 93 93 REF_PERIOD_DETAIL="C" à reporting year 1995 starts 1^^st^^ January 1995 94 94 95 - 2)Reporting year starts on the first day of a month different to January98 +1. Reporting year starts on the first day of a month different to January 96 96 Example: fiscal year starting on the 1^^st^^ of July 97 97 98 98 <na_:Series **REF_PERIOD_DETAIL="F07" **STO="B1G" REF_AREA="LU" FREQ="Q"> 99 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 102 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 100 100 </na_:Series> 101 101 102 102 103 103 REF_PERIOD_DETAIL="F07" à reporting year 1995 starts 1^^st^^ July 1995 and Q1 projected on the calendar year goes from: 07-09/1995 104 104 105 - 3)Reporting year starts on a given day in the year108 +1. Reporting year starts on a given day in the year 106 106 Example: tax year starting on the 5^^th^^ of April 107 107 108 108 <na_:Series **REF_PERIOD_DETAIL="F04" **STO="B1G" REF_AREA="LU" FREQ="Q"> 109 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 112 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 110 110 </na_:Series> 111 111 112 112 ... ... @@ -113,17 +113,17 @@ 113 113 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: 114 114 115 115 <na_:Series **REF_PERIOD_DETAIL="F_O" **STO="B1G" REF_AREA="LU" FREQ="Q"> 116 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 119 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 117 117 </na_:Series> 118 118 119 119 120 120 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. 121 121 122 - 4)Reporting year **ends** on a given day in the year125 +1. Reporting year **ends** on a given day in the year 123 123 Example: fiscal year ending on the 30^^th^^ of June, equivalent to fiscal year starting on the 1^^st^^ of July Y-1 124 124 125 125 <na_:Series **REF_PERIOD_DETAIL="??" **STO="B1G" REF_AREA="LU" FREQ="Q"> 126 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 129 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 127 127 </na_:Series> 128 128 129 129 ... ... @@ -133,42 +133,43 @@ 133 133 134 134 Using the attributes as suggested above, all cases outlined in the National Account examples can be fully covered: 135 135 136 -1 )Reporting year is equal to the calendar year139 +1. Reporting year is equal to the calendar year 137 137 138 138 <na_:Series **REF_PERIOD_DETAIL="C" REPYEARSTART="~-~-01-01"// //**STO="B1G" REF_AREA="LU" FREQ="Q"> 139 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 142 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 140 140 </na_:Series> 141 141 145 + 142 142 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. 143 143 144 - 2)Reporting year starts on the first day of a month different to January148 +Reporting year starts on the first day of a month different to January 145 145 Example: fiscal year starting on the 1^^st^^ of July 146 146 147 147 <na_:Series **REF_PERIOD_DETAIL="F07" REPYEARSTART="~-~-07-01" **STO="B1G" REF_AREA="LU" FREQ="Q"> 148 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 152 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 149 149 </na_:Series> 150 150 151 151 Reporting period 1995-Q1 lasts in that case from 1^^st^^ July 1995 until 30^^th^^ September 1995. 152 152 153 - 3)Reporting year starts on a given day in the year157 +1. Reporting year starts on a given day in the year 154 154 Example: tax year starting on the 5^^th^^ of April 155 155 156 156 <na_:Series **REF_PERIOD_DETAIL="F04" REPYEARSTART="~-~-04-05" **STO="B1G" REF_AREA="LU" FREQ="Q"> 157 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 161 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 158 158 </na_:Series> 159 159 160 160 Reporting period 1995-Q1 lasts in that case from 5^^th^^ April 1995 until 4^^th^^ July 1995. 161 161 162 - 4)Reporting year **ends** on a given day in the year166 +1. Reporting year **ends** on a given day in the year 163 163 Example: fiscal year ending on the 30^^th^^ of June, equivalent to fiscal year starting on the 1^^st^^ of July Y-1 164 164 165 165 <na_:Series **REF_PERIOD_DETAIL="??" REPYEAREND="~-~-06-30" **STO="B1G" REF_AREA="LU" FREQ="Q"> 166 - <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 170 + <na_:Obs OBS_VALUE="44" TIME_PERIOD="**1995**-Q1"/> 167 167 </na_:Series> 168 168 169 169 Reporting period 1995-Q1 lasts in that case from 1^^st^^ July 1994 until 30^^th^^ September 1994 170 170 171 - = 4. Example 2: Based on Agriculture data exchange=175 +1. Example 2: Based on Agriculture data exchange 172 172 173 173 == //Problem statement// == 174 174 ... ... @@ -188,6 +188,7 @@ 188 188 189 189 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). 190 190 195 + 191 191 |**Concept ID**|**Description**|**Role**|**Code List / Format** 192 192 |**FREQ**|Frequency|Dimension|A (annual), S (Half-yearly) 193 193 |**REF_AREA**|Reference area|Dimension|IN (India), CN (China) ... ... @@ -242,16 +242,15 @@ 242 242 243 243 **Sample Data for China** 244 244 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 250 +|**Crop year**|**Season**|**Calendar period**|**Units** 251 +|**2011**|Winter|Sep-Oct 2010|100 planted 252 +| | |May-Jun 2011|100 harvested 253 +| |Summer|Mar-Apr 2011|200 planted 254 +| | |Jul-Aug 2011|200 harvested 255 +|**2012**|Winter|Sep-Oct 2011|120 planted 256 +| | |May-Jun 2011|120 harvested 257 +| |Summer|Mar-Apr 2012|220 planted 258 +| | |Jul-Aug 2012|220 harvested 255 255 256 256 == //Recommendations based on the Use Cases from Agriculture// == 257 257 ... ... @@ -342,4 +342,11 @@ 342 342 343 343 ---- 344 344 345 -{{putFootnotes/}} 349 +[[~[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 350 + 351 +[[~[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]] 352 + 353 +[[~[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 354 + 355 +[[~[4~]>>path:#_ftnref4]] [[http:~~/~~/www.iso.org/iso/home/standards/iso8601.htm>>url:http://www.iso.org/iso/home/standards/iso8601.htm]] and 356 +[[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.