Data Models File Format
Data models are persisted in a tabledatamodelrepository.xml file (or tabledatamodelrepository_<roleId>.xml for a role). Each one of the file lists all the data models of the role or user.
XML Sample
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<TableDataModel Role="Retail_2d6e0f1e" TransformSelFunctionId="" enableCubeStatistics="true" id="4ed0efaf2746ec7c60593590bf140d59" lastedit="1588595267807" name="1 - Retail DB" processMode="1">
<Description>
<SpeakableNames contextprefix="DM" global="false" id="1_-_Retail_DB_Desc" readonly="false">
<SpeakableName DisplayName="${user.langChoice}" ImageName="" Lang="1" VocalName=""></SpeakableName>
<SpeakableName DisplayName="" ImageName="" Lang="2" VocalName=""></SpeakableName>
</SpeakableNames>
</Description>
<ScheduleList>
<Schedule frequency="daily" fromDay="18" fromHour="0" fromMinute="0" fromMonth="10" fromYear="2015" periods="1" time="20:0"></Schedule>
</ScheduleList>
<ExcelDS AddedColumns="0" DisableEmptyCol="false" FilterMode="0" FirstRowHeader="true" Limit="-1" Name="retail_v9_intl_world.xls" Path="239354567|demoretail/retail_v9_intl_world.xls" PreviewLimit="1000" SheetIdx="0" SheetName="Fact" SkipRow="0" TrimHeaders="true">
<Filters></Filters>
<ColProperties>
<Column Format="_DD_NOFORMAT_" Position="1"/>
<Column Format="_DD_NOFORMAT_" Position="2"/>
<Column Format="_DD_NOFORMAT_" Position="3"/>
<Column Format="_DD_NOFORMAT_" Position="11"/>
</ColProperties>
<ColTransformers>
<ColTransformer JSTransform="return namedValues["Product"] + " Brand";" JSTransformId="DV9MUcSV" Position="11"/>
</ColTransformers>
</ExcelDS>
<Columns>
<Column DSColName="Date" DSColType="2" Name="Date" Position="0"/>
<Column DSColName="Geography" DSColType="1" Name="Geography" Position="1"/>
<Column DSColName="Product" DSColType="1" Name="Product" Position="2"/>
<Column DSColName="Product Family" DSColType="1" Name="Product Family" Position="3"/>
<Column DSColName="Unit Price" DSColType="0" Name="Unit Price" Position="4"/>
<Column DSColName="Number of items" DSColType="0" Name="Number of items" Position="5"/>
<Column DSColName="Sales" DSColType="0" Name="Sales" Position="6"/>
<Column DSColName="Margin" DSColType="0" Name="Margin" Position="7"/>
<Column DSColName="Trend" DSColType="0" Name="Trend" Position="8"/>
<Column DSColName="Target Margin" DSColType="0" Name="Target Margin" Position="9"/>
<Column DSColName="Customer satisfaction" DSColType="0" Name="Customer satisfaction" Position="10"/>
<Column DSColName="Margin % [Y-1]" DSColType="0" Name="Margin % [Y-1]" Position="11"/>
</Columns>
<IgnoredColumns></IgnoredColumns>
<Dimensions>
<Dimension ColId="0" Continuous="true" Display="false" DisplayRootLevel="true" Format="" Name="Date" Navigation="true" OrderSort="0" OutputTimeZone="0" Sort="1" SourceTimeZone="0" Type="4">
<SpeakableNames contextprefix="DM.DIM" global="false" id="Date" readonly="false">
<SpeakableName DisplayName="" ImageName="" Lang="0" VocalName="">
<Tag></Tag>
</SpeakableName>
<SpeakableName DisplayName="" ImageName="" Lang="1" VocalName="">
<Tag></Tag>
</SpeakableName>
<SpeakableName DisplayName="Fecha" ImageName="" Lang="2" VocalName="">
<Tag></Tag>
</SpeakableName>
<SpeakableName DisplayName="" ImageName="" Lang="3" VocalName="">
<Tag></Tag>
</SpeakableName>
</SpeakableNames>
<Category></Category>
<Hierarchies>
<Hierarchy Name="Date" addToContinuousDim="true" forceSimple="2" lastedit="0" nullGroups="12" shared="true">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Date" readonly="false">
...
</SpeakableNames>
<OtherGroupsName>
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="$ui.Other" readonly="false">
<SpeakableName DisplayName="Other" ImageName="" Lang="0" VocalName="Other"></SpeakableName>
<SpeakableName DisplayName="Autre" ImageName="" Lang="1" VocalName="Autre"></SpeakableName>
</SpeakableNames>
</OtherGroupsName>
<Levels>
<Level Allowmulti="false" Format="" Formula="new Date(t*1000).getDate()" MaxFormula="if(mF==0){Number.NaN;}else{new Date(mF*1000);d.setDate(s+1);d.setHours(0, 0, 0, 0);d.getTime()/1000;}" MinFormula="if(mF==0){Number.NaN;}else{var d = new Date(mF*1000);d.setDate(s);d.getTime()/1000;}" Name="Day" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Day" readonly="false">
...
</SpeakableNames>
</Level>
<Level Allowmulti="false" Format="Mois" Formula="(new Date(t*1000).getMonth()+1)" MaxFormula="if(mF==0){Number.NaN;}else{var d = new Date(mF*1000);d.setHours(0, 0, 0, 0);d.setMonth(s, 1);d.getTime()/1000;}" MinFormula="if(mF==0){Number.NaN;}else{var d = new Date(mF*1000);d.setMonth(s-1);d.getTime()/1000;}" Name="Month" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Month" readonly="false">
...
</SpeakableNames>
</Level>
<Level Allowmulti="false" Format="" Formula="new Date(t*1000).getFullYear()" MaxFormula="(new Date(s+1, 0, 1)).getTime()/1000" MinFormula="(new Date(s, 0, 1)).getTime()/1000" Name="Year" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Year" readonly="false">
...
</SpeakableNames>
</Level>
</Levels>
</Hierarchy>
<Hierarchy Name="Month Year" addToContinuousDim="true" forceSimple="2" lastedit="0" nullGroups="12" shared="true">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Month Year" readonly="false">
...
</SpeakableNames>
<OtherGroupsName>
<SpeakableNames contextprefix="DM.HIERARCHY" global="true" id="$ui.Other" readonly="false"></SpeakableNames>
</OtherGroupsName>
<Levels>
<Level Allowmulti="false" Format="Date" Formula="new Date(new Date(t*1000).getFullYear(), new Date(t*1000).getMonth(), new Date(t*1000).getDate()).getTime()/1000" MaxFormula="var d = new Date(s*1000); d.setHours(0, 0, 0, 0); d.setDate(d.getDate()+1); d.getTime()/1000" MinFormula="s" Name="Day" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Day" readonly="false">
...
</SpeakableNames>
</Level>
<Level Allowmulti="false" Format="Mois Annee" Formula="new Date(new Date(t*1000).getFullYear(), new Date(t*1000).getMonth(), 1).getTime()/1000" MaxFormula="var d = new Date(s*1000); d.setHours(0, 0, 0, 0); d.setMonth(d.getMonth()+1, 1); d.getTime()/1000" MinFormula="s" Name="Month" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Month" readonly="false">
...
</SpeakableNames>
</Level>
<Level Allowmulti="false" Format="Trimestre" Formula="new Date(new Date(t*1000).getFullYear(), Math.floor(new Date(t*1000).getMonth() / 3)*3, 1).getTime()/1000" MaxFormula="var d = new Date(s*1000); d.setHours(0, 0, 0, 0); d.setMonth(d.getMonth()+3, 1); d.getTime()/1000" MinFormula="s" Name="Quarter" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Quarter" readonly="false">
...
</SpeakableNames>
</Level>
<Level Allowmulti="false" Format="" Formula="new Date(t*1000).getFullYear()" MaxFormula="(new Date(s+1, 0, 1)).getTime()/1000" MinFormula="(new Date(s, 0, 1)).getTime()/1000" Name="Year" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Year" readonly="false">
...
</SpeakableNames>
</Level>
</Levels>
</Hierarchy>
<Hierarchy Name="Week year" addToContinuousDim="true" forceSimple="2" lastedit="0" nullGroups="12" shared="true">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Week year" readonly="false">
...
</SpeakableNames>
<OtherGroupsName>
<SpeakableNames contextprefix="DM.HIERARCHY" global="true" id="$ui.Other" readonly="false"></SpeakableNames>
</OtherGroupsName>
<Levels>
<Level Allowmulti="false" Format="Semaine Annee" Formula="(new Date(new Date(t*1000).getFullYear(), new Date(t*1000).getMonth(), new Date(t*1000).getDate(), 0, 0).getTime() - ((new Date(t*1000).getDay()==0)?6:new Date(t*1000).getDay()-1)*24*60*60*1000)/1000" MaxFormula="s + 7*24*60*60" MinFormula="s" Name="Week" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Week" readonly="false">
...
</SpeakableNames>
</Level>
<Level Allowmulti="false" Format="" Formula="new Date(t*1000).getFullYear()" MaxFormula="(new Date(s+1, 0, 1)).getTime()/1000" MinFormula="(new Date(s, 0, 1)).getTime()/1000" Name="Year" OrderSort="-1" Sort="-1" type="2">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Year" readonly="false">
...
</SpeakableNames>
</Level>
</Levels>
</Hierarchy>
</Hierarchies>
</Dimension>
<Dimension ColId="1" Continuous="false" Display="false" DisplayRootLevel="false" Name="Geography" Navigation="true" OrderSort="0" Sort="0" Type="3">
<SpeakableNames contextprefix="DM.DIM" global="false" id="Geography" readonly="false">
...
</SpeakableNames>
<Category></Category>
<Hierarchies>
<Hierarchy ExtProvider="com.digdash.utils.DimensionGeoMatcher" Name="Géographique" addToContinuousDim="false" forceSimple="2" lastedit="0" nullGroups="12" shared="false">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Géographique" readonly="false">
...
</SpeakableNames>
<OtherGroupsName>
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Other" readonly="false">
...
</SpeakableNames>
</OtherGroupsName>
</Hierarchy>
</Hierarchies>
</Dimension>
<Dimension ColId="2" Continuous="false" Display="false" DisplayRootLevel="true" ExtDMId="af1e048ce036fb227bcf4c6a8f35a0ae" ExtDimId="Product" Name="Product" Navigation="true" OrderSort="0" Sort="0" Type="2">
<SpeakableNames contextprefix="DM.DIM" global="false" id="Product" readonly="false">
...
</SpeakableNames>
<Category></Category>
<Hierarchies>
<Hierarchy Name="Product" addToContinuousDim="false" forceSimple="2" lastedit="0" nullGroups="12" shared="false">
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Product" readonly="false">
...
</SpeakableNames>
<OtherGroupsName>
<SpeakableNames contextprefix="DM.HIERARCHY" global="false" id="Other" readonly="false">
...
</SpeakableNames>
</OtherGroupsName>
<Levels>
<Level Allowmulti="false" Name="Product Family" OrderSort="-1" Sort="-1" type="3">
<SpeakableNames contextprefix="DM.DIM" global="false" id="Product Family" readonly="false">
...
</SpeakableNames>
</Level>
</Levels>
</Hierarchy>
</Hierarchies>
</Dimension>
<Dimension ColId="3" Continuous="false" Display="false" DisplayRootLevel="true" ExtDMId="052ead0a4f621140b0f7784b651dc4c8" ExtDimId="Product Family" Name="Product Family" Navigation="true" OrderSort="0" Sort="0" Type="2">
<SpeakableNames contextprefix="DM.DIM" global="false" id="Product Family" readonly="false">
...
</SpeakableNames>
<Category></Category>
</Dimension>
</Dimensions>
<DDVars></DDVars>
<Measures>
<Measure Aggregation="AGG_SUM" ColId="4" Color="" Format="Euro" Formula="" Language="0" Name="Unit Price" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Unit Price" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="AGG_SUM" ColId="5" Color="" Format="" Formula="" Language="0" Name="Number of items" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Number of items" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="AGG_SUM" ColId="6" Color="" Format="Euro" Formula="" Language="0" Name="Sales" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Sales" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="AGG_AVG" ColId="7" Color="" Format="Pourcentage" Formula="" Language="0" Name="Margin %" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Margin %" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="AGG_SUM" ColId="8" Color="" Format="" Formula="" Language="0" Name="Trend" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Trend" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="AGG_SUM" ColId="9" Color="" Format="Pourcentage" Formula="" Language="0" Name="Target Margin %" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Target Margin %" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="AGG_AVG" ColId="10" Color="" Format="" Formula="" Language="0" Name="Customer satisfaction" Target="Target satisfaction" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Customer satisfaction" readonly="false">
...
</SpeakableNames>
<Category></Category>
<targets>
<Target EvolutionType="0" FinalVal="0" GlobalVal="6.0" GoodWhen="increasing" Measure="" Name="Target satisfaction" useTarget="true">
<SpeakableNames global="true" id="Target satisfaction" readonly="false"></SpeakableNames>
<Zones>
<Zone addMax="false" addMin="false" color="D20000" fillcolor="" id="BAD" max="-10.0" measureIdMax="" measureIdMin="" min="-∞" name="AxisZone 0" percentMax="true" percentMin="false" type="2" typeComposite="2"></Zone>
<Zone addMax="false" addMin="false" color="d2d200" fillcolor="" id="OK" max="0.0" measureIdMax="" measureIdMin="" min="-10.0" name="AxisZone 1" percentMax="true" percentMin="true" type="3" typeComposite="3"></Zone>
<Zone addMax="false" addMin="false" color="00D200" fillcolor="" id="GOOD" max="+∞" measureIdMax="" measureIdMin="" min="0.0" name="AxisZone 2" percentMax="false" percentMin="true" type="0" typeComposite="0"></Zone>
</Zones>
<Allocations>
<DimensionAllocation Name="Geography" Type="ignore"></DimensionAllocation>
<DimensionAllocation Name="Product" Type="ignore"></DimensionAllocation>
<DimensionAllocation Name="Product Family" Type="ignore"></DimensionAllocation>
<DimensionAllocation Name="Date" Type="ignore"></DimensionAllocation>
</Allocations>
<TimeEvolution DateEnd="" DateStart=""></TimeEvolution>
</Target>
</targets>
<AssocMeasures></AssocMeasures>
</Measure>
<Measure Aggregation="NO_AGG" ColId="11" Color="" Format="Pourcentage" Formula="'Margin %'" Language="0" Name="Margin % [Y-1]" Target="" Trend="0">
<SpeakableNames contextprefix="DM.MEASURE" global="false" id="Margin % [Y-1]" readonly="false">
...
</SpeakableNames>
<Category></Category>
<AssocMeasures>
<AssocMeasure Agg="1" MeasureName="Margin %" contextid="" id="Margin %" pos="0">
<DimensionMemberFilters></DimensionMemberFilters>
<AssocExplorers>
<AssocExplorer Deep="-1" Name="Date" Navigable="true" TransformFunctionId="TransPrevYear"></AssocExplorer>
</AssocExplorers>
</AssocMeasure>
</AssocMeasures>
</Measure>
</Measures>
<OneToManyDimensionRelations/>
<PROPERTIES/>
</TableDataModel>
</TableDataModels>
TableDataModels Node
Attribute | Type | Description |
---|---|---|
version | Version number | The version of DigDash Enterprise that last wrote this file |
Child Nodes | Count | Description |
---|---|---|
TableDataModel | N | Descriptor of a data model |
TableDataModel Node
The flow is the description of a visual representation in DigDash Enterprise. It can be of several types, from a single indicator, table, chart to a more complex report containing other flows (PDF/PPT/HTML reports). Each type has its own set of specific inputs.
Attribute | Type | Description |
---|---|---|
Role | Identifier | Identifier of the role of the data model as it is defined in LDAP. This value is empty for a user wallet. |
lastedit | Timestamp | Last time this data model was modified |
name | Name | User friendly name of the data model (can be modified) |
id | Identifier | Identifier of the data model (generated) |
TransformSelFunctionId | Identifier | Id of the Live security function used (empty if no live security is defined) |
Child Nodes | Count | Description |
---|---|---|
ScheduleList | 1 | List of Schedule options for this element |
Description | 1 | Description of the data model (localized via SpeakableNames) |
****DS | 1 | Data source properties for this data model. See below for a list of possible tags |
Columns | 1 | Mapping of the columns (Column) in the data source and data model |
IgnoredColumns | 1 | Mapping of the columns (Column) of the data source that are ignored in the data model |
Dimensions | 1 | List of Dimension defined in the data model |
Measures | 1 | List of Measure defined in the data model |
DDVars | 1 | List of DDVar used in the data model (what-if analysis, simulation...) |
OneToManyDimensionRelations | 1 | TODO |
PROPERTIES | 1 | TODO |
Data source ****DS Node
There is a specific tag associated to each data source type. This tag is used in the data model XML to define the data source properties (see ****DS child node above).
Data source type (tag) | Description | Details and attributes |
---|---|---|
ExcelDS | Excel XLS or XLSX file | TODO |
CSVDS | CSV file | TODO |
FTXTDS | Fixed columns width text file | TODO |
XMLDS | XML file | TODO |
HTMLTABLEDS | (part of) HTML file | TODO |
MDBDS | MDB file (Access) | TODO |
JDBCDS | Database query (SQL...) | TODO |
OLAPDS | OLAP query | TODO |
NOSQL | NoSql query (MongoDB) | TODO |
BOHTMLDS | BusinessObjects HTML report file | TODO |
BOXLSCMSDS | BusinessObjects XLS extract (BusinessObject portal) | TODO |
BOCSVCMSDS | BusinessObjects CSV extract (BusinessObject portal) | TODO |
COGNOSXMLDS | Cognos XML extract (file) | TODO |
COGNOSXMLCMSDS | Cognos XML extract (Cognos application) | TODO |
BIRTHTMLDS | (obsolete) BIRT report | TODO |
GACSVDS | Google Analytics query | TODO |
SFCSVDS | Salesforces query | TODO |
SPLUNK | Splunk query | TODO |
TRANSDMDS | DigDash Cube Transformer data source | TODO |
COLTRANSDMDS | DigDash Cube Column Transformer data source | TODO |
RCOLTRANSDMDS | DigDash Cube "R" Column Transformer data source | TODO |
ESDS | ElasticSearch query | TODO |
MERGEDMDS | DigDash Cubes Union datasource | TODO |
JOINDMDS | DigDash Cubes Join datasource | TODO |
JSONDS | JSON file | TODO |
DATACATALOGDS | DigDash Metadata query | TODO |
SAPBEXDS | SAP BEx query | TODO |
IODS | IODS datasource (execute an external script to provide data) | TODO |
Child Nodes | Count | Description |
---|---|---|
Filters | 1 | List of row filters to apply to the datasource |
ColProperties | 1 | List of columns properties and options |
ColTransformers | 1 | List of columns transformation scripts, in their order of execution, and their options
|
ColProperties/Column Node
Attribute | Type | Description |
---|---|---|
Format | Identifier | Identifier of the optional format used to parse the column. Formats are defined in formatrepository.xml |
Position | Integer | Position of the column in the data source |
ColTransformers/ColTransformer Node
Attribute | Type | Description |
---|---|---|
JSTransform | Javascript code | Javascript code of the column transformation script |
JSTransformId | Identifier | ID of the column transformation script if it is a shared script. Shared scripts are defined in jsfunctionrepository.xml |
Position | Integer | Position of the column in the data source |
Columns/Column Node
Attribute | Type | Description |
---|---|---|
DSColName | Name | Name of the column in the data source |
DSColType | Enum | Type of the column in the data source |
Name | Name | Name of the column in the data model (can be renamed) |
Position | Integer | Position of the column in the data source |
Dimension Node
Attribute | Type | Description |
---|---|---|
ColId | Integer | Position of the corresponding column in the data source. See Position attribute in Column Node |
Continuous | Boolean | true: the dimension is continuous (date...), false: it is discrete |
Display | Boolean | true: dimension should be displayed in editor, Self-Service BI and other tools, false: dimension is hidden |
DisplayRootLevel | Boolean | If dimension has hierarchy, should we drill to the root level (true) or not (false) |
Name | Identifier | Identifier of the dimension. Note: Why "Name"? It is also the display name of the dimension if no localized name has been defined |
Navigation | Boolean | Flag for navigating in the dimension (filter/drill). true: dimension should not be filtered/drilled, false: dimension can be filtered/drilled. This settings is just a default value : it can be overridden in a flow and in a dashboard page using this dimension. |
OrderSort | Enum | Sort order (0: ascending, 1: descending) |
Sort | Enum | Type of sort (-1: none, 0: alpha, 1: numerical, 3: manual) |
Type | Enum | Type of the dimension (2: discrete, 3: geographic, 4 continuous/time) |
Caption | Identifier | Name/Id of another dimension, in this data model, used to display caption values for this dimension (cardinality between the 2 dimensions must be 1-1). Allows for code/label dimension. |
Child Nodes | Count | Description |
---|---|---|
SpeakableNames | 1 | Localized user friendly dimension name |
Category | 1 | Localized category of the dimension via SpeakableNames |
Hierarchies | 1 | List of hierarchies (Hierarchy) on this dimension |
Hierarchy
Attribute | Type | Description |
---|---|---|
Name | Identifier | Identifier of the hierarchy. Note: Why "Name"? It is also the display name of the hierarchy if no localized name has been defined |
addToContinuousDim | Boolean | - |
lastedit | Timestamp | last modification of the hierarchy |
nullGroups | Integer | - |
shared | Boolean | true: hierarchy is shared via the hierarchy repository, false: hierarchy is local to this data model |
Child Nodes | Count | Description |
---|---|---|
SpeakableNames | 1 | Localized user friendly hierarchy name |
OtherGroupsName | 1 | Localized name of the "Other" group (members of the dimension that fall outside of the hierarchy), using SpeakablesNames |
Levels | 1 | List of Level on this hierarchy |
Level (TODO)
Attribute | Type | Description |
---|---|---|
TODO | TODO | TODO |
Child Nodes | Count | Description |
---|---|---|
TODO | TODO | TODO |
Measure Node
Attribute | Type | Description |
---|---|---|
ColId | Integer | Position of the corresponding column in the data source. See Position attribute in Column Node. -1 if the measure is derived. |
Aggregation | Enum | Method of aggregating values on this measure (AGG_SUM: sum, AGG_AVG: average, AGG_MIN: minimum, AGG_MAX: maximum, NO_AGG: (derived measure) no aggregation = after aggregation, AGG_RSM: Running sum, AGG_ARSUM: running sum on first axis, AGG_LAST: last value, AGG_SEMI: semi-additive, AGG_OR: logical OR, AGG_MEDIAN: median) |
Color | Color | Prefered color of the measure in charts |
Format | Identifier | Id of the number format (formatrepository.xml) |
Formula | Code | Only for derived measures. Formula of the measure |
Language | Enum | Language/mode in which the formula is written (0 (MODE_AFTER_AGG) (default): the measure is calculated after aggregation of the data, 1 (MODE_BUILD): the measure is calculated at cube build time (calculated column), 2 (MODE_BEFORE_AGG): The measure is calculated before aggregation |
Name | Identifier | Identifier of the measure. Note: Why "Name"? It is also the display name of the measure if no localized name has been defined |
Target | Identifier | ?? |
Trend | Enum | ?? |
Child Nodes | Count | Description |
---|---|---|
SpeakableNames | 1 | Localized user friendly measure name |
Category | 1 | Localized category of the measure via SpeakableNames |
targets | 1 | List of Target defined on this measure |
AssocMeasures | 1 | List of AssocMeasure (populated only if the measure is derived) that are other measures this derived measure depends on |
AssocMeasure Node
Attribute | Type | Description |
---|---|---|
id | Identifier | Identifier of the associated measure (operand). Not to be confused with the Id of the measure that this associated measure refers to. Eg. We could have the same measure used several times in a fomula, but with different context, aggregations... |
agg | Enum | TODO |
contextid | Identifier | TODO |
pos | Integer | Position of this associated measure in the formula of its derived measure |
Child Nodes | Count | Description |
---|---|---|
DimensionMemberFilters | 1 | Dimension filters used on the associated measure |
AssocExplorers | 1 | Dimension explorations |
SpeakableNames Node
This is used in different part and defines the localization for the name of the node where it is included.
Note : if the localization global attribute is set to true, then the translated string are stored in a properties files. If it is false the localized string are defined in SpeakableName child nodes, one for each language.
We will not describe this node for each place where it can be used. Instead we will only mention it.