Changes for page 13 Structure Mapping

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

From version 10.3
edited by Helena
on 2025/05/16 09:12
Change comment: There is no comment for this version
To version 10.10
edited by Helena
on 2025/05/16 09:18
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -38,15 +38,14 @@
38 38  
39 39  Different source values can also map to the same target value, for example when deriving regions from country codes.
40 40  
41 -[[image:SDMX 3-0-0 SECTION 6 FINAL-1.0_en_59eee18f.gif||alt="Shape7" height="1" width="192"]]
41 +(% style="width:674.294px" %)
42 +|(% style="width:284px" %)**Source Component: REF_AREA**|(% style="width:387px" %)**Target Component: REGION**
43 +|(% style="width:284px" %)FR|(% style="width:387px" %)EUR
44 +|(% style="width:284px" %)DE|(% style="width:387px" %)EUR
45 +|(% style="width:284px" %)IT|(% style="width:387px" %)EUR
46 +|(% style="width:284px" %)ES|(% style="width:387px" %)EUR
47 +|(% style="width:284px" %)BE|(% style="width:387px" %)EUR
42 42  
43 -|Source Component: REF_AREA|Target Component: REGION
44 -|FR|EUR
45 -|DE|EUR
46 -|IT|EUR
47 -|ES|EUR
48 -|BE|EUR
49 -
50 50  == 13.3 N-n structure maps ==
51 51  
52 52  N-n (pronounced 'N to N') mappings describe rules where a specified combination of values in multiple source Components map to specified values in one or more target Components. For example, when mapping a partial Series Key from a highly multidimensional cube (like Balance of Payments) to a single 'Indicator' Dimension in a target Data Structure.
... ... @@ -53,51 +53,42 @@
53 53  
54 54  Example:
55 55  
56 -|Rule|Source|Target
57 -|1|(((
55 +(% style="width:760.294px" %)
56 +|(% style="width:58px" %)**Rule**|(% style="width:384px" %)**Source**|(% style="width:313px" %)**Target**
57 +|(% style="width:58px" %)1|(% style="width:384px" %)(((
58 58  If
59 -
60 60  FREQUENCY=A; and ADJUSTMENT=N; and MATURITY=L.
61 -)))|(((
60 +)))|(% style="width:313px" %)(((
62 62  Set
63 -
64 64  INDICATOR=A_N_L
65 65  )))
66 -|2|(((
64 +|(% style="width:58px" %)2|(% style="width:384px" %)(((
67 67  If
68 -
69 69  FREQUENCY=M; and ADJUSTMENT=S_A1; and MATURITY=TY12.
70 -)))|(((
67 +)))|(% style="width:313px" %)(((
71 71  Set
72 -
73 73  INDICATOR=MON_SAX_12
74 74  )))
75 75  
76 76  N-n rules can also set values for multiple source Components.
77 77  
78 -|Rule|Source|Target
79 -|1|(((
74 +(% style="width:757.294px" %)
75 +|(% style="width:62px" %)**Rule**|(% style="width:378px" %)**Source**|(% style="width:312px" %)**Target**
76 +|(% style="width:62px" %)1|(% style="width:378px" %)(((
80 80  If
81 -
82 82  FREQUENCY=A; and ADJUSTMENT=N; and MATURITY=L.
83 -)))|(((
79 +)))|(% style="width:312px" %)(((
84 84  Set
85 -
86 -INDICATOR=A_N_L, STATUS=QXR15,
87 -
81 +INDICATOR=A_N_L,
82 +STATUS=QXR15,
88 88  NOTE="Unadjusted".
89 89  )))
90 -|2|(((
85 +|(% style="width:62px" %)2|(% style="width:378px" %)(((
91 91  If
92 -
93 93  FREQUENCY=M; and ADJUSTMENT=S_A1; and MATURITY=TY12.
94 -)))|(((
88 +)))|(% style="width:312px" %)(((
95 95  Set
96 -
97 -INDICATOR=MON_SAX_12,
98 -
99 -STATUS=MPM12,
100 -
90 +INDICATOR=MON_SAX_12, STATUS=MPM12,
101 101  NOTE="Seasonally Adjusted"
102 102  )))
103 103  
... ... @@ -107,37 +107,26 @@
107 107  
108 108  A simple example mapping a source dataset with a single dimension to one with multiple dimensions is shown below:
109 109  
110 -|Source|Target|Output Series Key
111 -|SERIES_CODE=XMAN_Z_21|(((
100 +(% style="width:819.294px" %)
101 +|(% style="width:240px" %)**Source**|(% style="width:246px" %)**Target**|(% style="width:329px" %)**Output Series Key**
102 +|(% style="width:240px" %)SERIES_CODE=XMAN_Z_21|(% style="width:246px" %)(((
112 112  Dimensions
113 -
114 114  INDICATOR=XM
115 -
116 116  FREQ=A
117 -
118 118  ADJUSTMENT=N
119 -
120 120  Attributes
121 -
122 122  UNIT_MEASURE=_Z
123 -
124 124  COMP_ORG=21
125 -)))|XM:A:N
126 -|SERIES_CODE=XMAN_Z_34|(((
110 +)))|(% style="width:329px" %)XM:A:N
111 +|(% style="width:240px" %)SERIES_CODE=XMAN_Z_34|(% style="width:246px" %)(((
127 127  Dimensions
128 -
129 129  INDICATOR=XM
130 -
131 131  FREQ=A
132 -
133 133  ADJUSTMENT=N
134 -
135 135  Attributes
136 -
137 137  UNIT_MEASURE=_Z
138 -
139 139  COMP_ORG=34
140 -)))|XM:A:N
119 +)))|(% style="width:329px" %)XM:A:N
141 141  
142 142  The above behaviour can be okay if the series XMAN_Z_21 contains observations for different periods of time then the series XMAN_Z_34. If however both series contain observations for the same point in time, the output for this mapping will be two observations with the same series key, for the same period in time.
143 143  
... ... @@ -153,24 +153,26 @@
153 153  
154 154  A Representation Map mapping ISO 2-character to ISO 3-character Codelists would take the following form:
155 155  
156 -|CL_ISO_ALPHA2|CL_ISO_ALPHA3
157 -|AF|AFG
158 -|AL|ALB
159 -|DZ|DZA
160 -|AS|ASM
161 -|AD|AND
162 -|etc…|
135 +(% style="width:763.294px" %)
136 +|(% style="width:252px" %)**CL_ISO_ALPHA2**|(% style="width:508px" %)**CL_ISO_ALPHA3**
137 +|(% style="width:252px" %)AF|(% style="width:508px" %)AFG
138 +|(% style="width:252px" %)AL|(% style="width:508px" %)ALB
139 +|(% style="width:252px" %)DZ|(% style="width:508px" %)DZA
140 +|(% style="width:252px" %)AS|(% style="width:508px" %)ASM
141 +|(% style="width:252px" %)AD|(% style="width:508px" %)AND
142 +|(% style="width:252px" %)etc…|(% style="width:508px" %)
163 163  
164 164  A Representation Map mapping free text country names to an ISO 2-character Codelist could be similarly described:
165 165  
166 -|Text|CL_ISO_ALPHA2
167 -|"Germany"|DE
168 -|"France"|FR
169 -|"United Kingdom"|GB
170 -|"Great Britain"|GB
171 -|"Ireland"|IE
172 -|"Eire"|IE
173 -|etc…|
146 +(% style="width:770.294px" %)
147 +|(% style="width:247px" %)**Text**|(% style="width:520px" %)**CL_ISO_ALPHA2**
148 +|(% style="width:247px" %)"Germany"|(% style="width:520px" %)DE
149 +|(% style="width:247px" %)"France"|(% style="width:520px" %)FR
150 +|(% style="width:247px" %)"United Kingdom"|(% style="width:520px" %)GB
151 +|(% style="width:247px" %)"Great Britain"|(% style="width:520px" %)GB
152 +|(% style="width:247px" %)"Ireland"|(% style="width:520px" %)IE
153 +|(% style="width:247px" %)"Eire"|(% style="width:520px" %)IE
154 +|(% style="width:247px" %)etc…|(% style="width:520px" %)
174 174  
175 175  Valuelists, introduced in SDMX 3.0, are equivalent to Codelists but allow the maintenance of non-SDMX identifiers. Importantly, their IDs do not need to conform to IDType, but as a consequence are not Identifiable.
176 176  
... ... @@ -178,10 +178,11 @@
178 178  
179 179  In common with Codelists, each item in a Valuelist has a multilingual name giving it a human-readable label and an optional description. For example:
180 180  
181 -|Value|Locale|Name
182 -|$|en|United States Dollar
183 -|%|En|Percentage
184 -| |fr|Pourcentage
162 +(% style="width:780.294px" %)
163 +|(% style="width:126px" %)**Value**|(% style="width:153px" %)**Locale**|(% style="width:498px" %)**Name**
164 +|(% style="width:126px" %)$|(% style="width:153px" %)en|(% style="width:498px" %)United States Dollar
165 +|(% style="width:126px" %)%|(% style="width:153px" %)En|(% style="width:498px" %)Percentage
166 +|(% style="width:126px" %) |(% style="width:153px" %)fr|(% style="width:498px" %)Pourcentage
185 185  
186 186  Other characteristics of Representation Maps:
187 187  
... ... @@ -205,30 +205,31 @@
205 205  
206 206  Below is an example set of regular expression rules for a particular component.
207 207  
208 -|Regex|Description|Output
209 -|A|Rule match if input = 'A'|OUT_A
210 -|^[A-G]|Rule match if the input starts with letters A to G|OUT_B
211 -|A~|B|Rule match if input is either 'A' or 'B'|OUT_C
190 +(% style="width:708.294px" %)
191 +|(% style="width:133px" %)**Regex**|(% style="width:377px" %)**Description**|(% style="width:194px" %)**Output**
192 +|(% style="width:133px" %)A|(% style="width:377px" %)Rule match if input = 'A'|(% style="width:194px" %)OUT_A
193 +|(% style="width:133px" %)^[A-G]|(% style="width:377px" %)Rule match if the input starts with letters A to G|(% style="width:194px" %)OUT_B
194 +|(% style="width:133px" %)A~|B|(% style="width:377px" %)Rule match if input is either 'A' or 'B'|(% style="width:194px" %)OUT_C
212 212  
213 213  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.
214 214  
215 215  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
216 216  
217 -|Regex|Target output|Example Input|Example Output
218 -|(((
219 -([0-9]{4})[0-
200 +(% style="width:720.294px" %)
201 +|(% style="width:199px" %)**Regex**|(% style="width:126px" %)**Target output**|(% style="width:192px" %)**Example Input**|(% style="width:200px" %)**Example Output**
202 +|(% style="width:199px" %)(((
203 +([0-9]{4})[0-9]([0-9]{1})
204 +)))|(% style="width:126px" %)\1-Q\2|(% style="width:192px" %)200933|(% style="width:200px" %)2009-Q3
220 220  
221 -9]([0-9]{1})
222 -)))|\1-Q\2|200933|2009-Q3
223 -
224 224  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.
225 225  
226 226  The following example shows this:
227 227  
228 -|Priority|Regex|Description|Output
229 -|1|A|Rule match if input = 'A'|OUT_A
230 -|2|B|Rule match if input = 'B'|OUT_B
231 -|3|[A-Z]|Any character A-Z|OUT_C
210 +(% style="width:725.294px" %)
211 +|(% style="width:198px" %)**Priority**|(% style="width:148px" %)**Regex**|(% style="width:212px" %)**Description**|(% style="width:164px" %)**Output**
212 +|(% style="width:198px" %)1|(% style="width:148px" %)A|(% style="width:212px" %)Rule match if input = 'A'|(% style="width:164px" %)OUT_A
213 +|(% style="width:198px" %)2|(% style="width:148px" %)B|(% style="width:212px" %)Rule match if input = 'B'|(% style="width:164px" %)OUT_B
214 +|(% style="width:198px" %)3|(% style="width:148px" %)[A-Z]|(% style="width:212px" %)Any character A-Z|(% style="width:164px" %)OUT_C
232 232  
233 233  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.
234 234  
... ... @@ -240,9 +240,10 @@
240 240  
241 241  For instance:
242 242  
243 -|Input String|Start|Length|Output
244 -|ABC_DEF_XYZ|5|3|DEF
245 -|XULADS|1|2|XU
226 +(% style="width:742.294px" %)
227 +|(% style="width:191px" %)**Input String**|(% style="width:154px" %)**Start**|(% style="width:211px" %)**Length**|(% style="width:182px" %)**Output**
228 +|(% style="width:191px" %)ABC_DEF_XYZ|(% style="width:154px" %)5|(% style="width:211px" %)3|(% style="width:182px" %)DEF
229 +|(% style="width:191px" %)XULADS|(% style="width:154px" %)1|(% style="width:211px" %)2|(% style="width:182px" %)XU
246 246  
247 247  Sub-strings can therefore be used for the conceptual rule //If starts with 'XU' map to Y// as shown in the following example:
248 248