Changes for page 13 Structure Mapping

Last modified by Artur on 2025/09/10 11:19

From version 4.5
edited by Helena
on 2025/06/16 14:41
Change comment: There is no comment for this version
To version 4.6
edited by Helena
on 2025/06/16 14:44
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -195,30 +195,31 @@
195 195  
196 196  Below is an example set of regular expression rules for a particular component.
197 197  
198 -|Regex|Description|Output
199 -|A|Rule match if input = 'A'|OUT_A
200 -|^[A-G]|Rule match if the input starts with letters A to G|OUT_B
201 -|A~|B|Rule match if input is either 'A' or 'B'|OUT_C
198 +(% style="width:664.294px" %)
199 +|(% style="width:141px" %)**Regex**|(% style="width:362px" %)**Description**|(% style="width:158px" %)**Output**
200 +|(% style="width:141px" %)A|(% style="width:362px" %)Rule match if input = 'A'|(% style="width:158px" %)OUT_A
201 +|(% style="width:141px" %)^[A-G]|(% style="width:362px" %)Rule match if the input starts with letters A to G|(% style="width:158px" %)OUT_B
202 +|(% style="width:141px" %)A~|B|(% style="width:362px" %)Rule match if input is either 'A' or 'B'|(% style="width:158px" %)OUT_C
202 202  
203 203  Like all mapping rules, the output is either a Code, a Value or free text depending on the representation of the Component in the target Data Structure Definition.
204 204  
205 205  If the regular expression contains capture groups, these can be used in the definition of the output value, by specifying \**//n//**// //as an output value where **//n//** is the number of the capture group starting from 1. For example
206 206  
207 -|Regex|Target output|Example Input|Example Output
208 -|(((
209 -([0-9]{4})[0-
208 +(% style="width:700.294px" %)
209 +|(% style="width:203px" %)Regex|(% style="width:148px" %)Target output|(% style="width:157px" %)Example Input|(% style="width:189px" %)Example Output
210 +|(% style="width:203px" %)(((
211 +([0-9]{4})[0-9]([0-9]{1})
212 +)))|(% style="width:148px" %)\1-Q\2|(% style="width:157px" %)200933|(% style="width:189px" %)2009-Q3
210 210  
211 -9]([0-9]{1})
212 -)))|\1-Q\2|200933|2009-Q3
213 -
214 214  As regular expression rules can be used as a general catch-all if nothing else matches, the ordering of the rules is important. Rules should be tested starting with the highest priority, moving down the list until a match is found.
215 215  
216 216  The following example shows this:
217 217  
218 -|Priority|Regex|Description|Output
219 -|1|A|Rule match if input = 'A'|OUT_A
220 -|2|B|Rule match if input = 'B'|OUT_B
221 -|3|[A-Z]|Any character A-Z|OUT_C
218 +(% style="width:704.294px" %)
219 +|(% style="width:130px" %)Priority|(% style="width:125px" %)Regex|(% style="width:241px" %)Description|(% style="width:205px" %)Output
220 +|(% style="width:130px" %)1|(% style="width:125px" %)A|(% style="width:241px" %)Rule match if input = 'A'|(% style="width:205px" %)OUT_A
221 +|(% style="width:130px" %)2|(% style="width:125px" %)B|(% style="width:241px" %)Rule match if input = 'B'|(% style="width:205px" %)OUT_B
222 +|(% style="width:130px" %)3|(% style="width:125px" %)[A-Z]|(% style="width:241px" %)Any character A-Z|(% style="width:205px" %)OUT_C
222 222  
223 223  The input 'A' matches both the first and the last rule, but the first takes precedence having the higher priority. The output is OUT_A.
224 224  
... ... @@ -230,14 +230,16 @@
230 230  
231 231  For instance:
232 232  
233 -|Input String|Start|Length|Output
234 -|ABC_DEF_XYZ|5|3|DEF
235 -|XULADS|1|2|XU
234 +(% style="width:623.294px" %)
235 +|(% style="width:169px" %)Input String|(% style="width:147px" %)Start|(% style="width:133px" %)Length|(% style="width:171px" %)Output
236 +|(% style="width:169px" %)ABC_DEF_XYZ|(% style="width:147px" %)5|(% style="width:133px" %)3|(% style="width:171px" %)DEF
237 +|(% style="width:169px" %)XULADS|(% style="width:147px" %)1|(% style="width:133px" %)2|(% style="width:171px" %)XU
236 236  
237 237  Sub-strings can therefore be used for the conceptual rule //If starts with 'XU' map to Y// as shown in the following example:
238 238  
239 -|Start|Length|Source|Target
240 -|1|2|XU|Y
241 +(% style="width:628.294px" %)
242 +|(% style="width:163px" %)Start|(% style="width:158px" %)Length|(% style="width:128px" %)Source|(% style="width:176px" %)Target
243 +|(% style="width:163px" %)1|(% style="width:158px" %)2|(% style="width:128px" %)XU|(% style="width:176px" %)Y
241 241  
242 242  == 13.6 Mapping non-SDMX time formats to SDMX formats ==
243 243