11 Logical Elements

Logical elements are typically those elements that are exposed in the Business Model and Mapping layer, or in other words, the elements that appear in the center pane of the Administration Tool.

This chapter contains the following topics:

11.1 Logical Column

The logical column element corresponds to the logical column object in the Business Model and Mapping layer.

The logical column tag includes the following attributes:

Table 11-1 Logical Column Tag Attributes

Attribute Name Description

isDerived

When set to true, indicates that the logical column is based on a user-defined expression (for example, another logical column, a constant value, or a variable).

IsWriteable

When set to true, indicates that write back has been enabled for this column. This feature is typically used with ADF Business Component data sources. This option is called Writeable in the Administration Tool.


The logical column tag includes the following child elements:

Table 11-2 Logical Column Child Elements

Element Name Description

Expr

Contains the expression from which the logical column should be derived. This element is only used when the isDerived attribute is set to true.

CustomSortOrder

If the sort order for this logical column is based on a different logical column, this element references that logical column.

The logical column upon which the sort order is based is contained in a sub-element called RefLogicalColumn.

DescriptorID

When multilingual columns are based on a lookup function, it is common to specify the non-translated lookup key column as the descriptor ID column of the translated column. This element references the descriptor ID column.

The descriptor ID logical column is contained in a sub-element called RefLogicalColumn.

Levels

For dimension columns, shows the level to which this column has been assigned. For level-based measures, shows the level at which the column has been explicitly fixed.

The level is contained in a sub-element called RefLogicalLevel.


Syntax

<LogicalColumn …
     isDerived=""
     isWriteable="">
   <Description />
   <Expr>...</Expr>
   <CustomSortOrder>
     <RefLogicalColumn …/>
   </CustomSortOrder>
   <DescriptorID>
     <RefLogicalColumn …/>
   </DescriptorID>
   <Levels>
     <RefLogicalLevel …/>
   </Levels>
</LogicalColumn>

Example

<LogicalColumn name="C1 Cust Name"
     parentName="&quot;Sample Sales&quot;.&quot;D1 Customer&quot;"
     parentId="2035:22"
     parentUid="742"
     id="2006:24"
     uid="782"
     isWriteable="false">
   <Description>
   <![CDATA[ Help : Customer Name stores the first name followed by the last name.    ]]> 
   </Description>
   <Levels>
     <RefLogicalLevel uid="1636" id="2025:552" qualifiedName="&quot;
     Sample Sales&quot;.&quot;H1 Customer&quot;.&quot;Detail Customer&quot;" />
   </Levels>
</LogicalColumn>

11.2 Business Model

The business model element corresponds to the business model object in the Business Model and Mapping layer.

The business model tag includes the following attributes:

Table 11-3 Subject Area Tag Attributes

Attribute Name Description

isClassicStar

If set to true, indicates that the business model follows a star schema. Star schemas have one-to-many relationships between the logical dimension tables and the logical fact table.

isAvailable

If set to true, indicates that the corresponding subject area is available for queries.


The business model tag includes the following child elements:

Table 11-4 Subject Area Child Elements

Element Name Description

Tables

References the logical tables that belong to this business model.

Each logical table is contained in a sub-element called RefLogicalTable.

DisplayFolders

References the display folders that belong to this business model.

Each display folder is contained in a sub-element called RefLogicalDisplayFolder.


Syntax

<BusinessModel …
     isClassicStar=""
     isAvailable="">
   <Description />
   <Tables>
     <RefLogicalTable …/>
     <RefLogicalTable …/>
   </Tables>
</BusinessModel>

Example

<BusinessModel name="Paint" id="2000:17" uid="18"
     isClassicStar="false"
     isAvailable="true">
   <Description /> 
   <Tables>
     <RefLogicalTable id="2035:21" qualifiedName="&quot;Paint&quot;.
     &quot;Sales Facts&quot;" /> 
     <RefLogicalTable id="2035:68" qualifiedName="&quot;Paint&quot;.
     &quot;Markets&quot;" /> 
     <RefLogicalTable id="2035:77" qualifiedName="&quot;Paint&quot;.
     &quot;Periods&quot;" /> 
     <RefLogicalTable id="2035:89" qualifiedName="&quot;Paint&quot;.
     &quot;Products&quot;" /> 
   </Tables>
</BusinessModel>

11.3 Logical Complex Join

The logical complex join element corresponds to the logical join object in the Business Model and Mapping Layer.

The logical complex join tag includes the following attributes:

Table 11-5 Logical Complex Join Tag Attributes

Attribute Name Description

type

The type of join. Valid values are Inner, LeftOuter, RightOuter, FullOuter, and FullOuterStitch.


The logical complex join tag includes the following child elements:

Table 11-6 Logical Complex Join Child Elements

Element Name Description

Roles

Roles define how a logical table or a logical level contributes to the join.

Each role is contained in a sub-element called Role. The role sub-element has two attributes:

  • multiplicity indicates the multiplicity of the table or level in the join. Valid values are ([0-9])* TO ([0-9])*, ZERO TO ONE, ZERO TO MANY, ONE TO ONE, ONE TO MANY, and UNKNOWN.

  • isAggregate indicates whether the table or level is an aggregate.

Each Role sub-element can contain two additional sub-elements: RefLogicalTable, which references the logical tables in the join, and RefLogicalLevel, which references the logical levels in the join.

See the syntax for the logical complex join element to see the complete hierarchy for the roles child element.

DrivingTable

If a driving table has been specified for the key, this element references that logical table.

The driving table is contained in a sub-element called RefLogicalTable.


Syntax

<LogicalComplexJoin …
     type=""
   <Description />
   <Roles>
     <Role multiplicity="" isAggregate="">
       <RefLogicalTable …/>
       <RefLogicalLevel …/>
     </Role>
   </Roles>
   <DrivingTable>
     <RefLogicalTable …/>
   </DrivingTable>
</LogicalComplexJoin>

Example

<LogicalComplexJoin name="Relationship_2004:19781201298630" id="2004:1990"
     uid="3667"
     type="Inner">
   <Description />
   <Roles>
     <Role multiplicity="ZERO TO MANY" isAggregate="false">
       <RefLogicalTable id="2035:1851" qualifiedName="&quot;GLOBAL&quot;.
       &quot;Units Cube&quot;"/>
     </Role>
     <Role multiplicity="ZERO TO ONE" isAggregate="false">
       <RefLogicalTable id="2035:1547" qualifiedName="&quot;GLOBAL&quot;.
       &quot;Time&quot;"/>
     </Role>
   </Roles>
</LogicalComplexJoin>

11.4 Logical Level

The logical level element corresponds to the logical level object contained in the dimensions in the Business Model and Mapping layer.

The logical level tag includes the following attributes:

Table 11-7 Logical Level Tag Attributes

Attribute Name Description

isUniqueSourceKey

If set to true, indicates that this level is associated with the logical column or columns that comprise the logical key of the dimension table (or in other words, that this level is the lowest level of the dimension).

isGTA

If set to true, indicates that this level is the Grand Total level, which is a special level representing the grand total for a dimension. Each dimension can have just one Grand Total level. A grand total level does not contain dimensional attributes and does not have a level key.

Note: GTA stands for Grand Total Alias.

isFDUC

If set to true, indicates that the logical level rolls up to its parent. This option is called Supports rollup to higher level of aggregation in the Administration Tool.

Note: FDUC stands for FullDrillUpCoverage.

levelConst

The star schema level constant.

memberCount

The number of elements that exist at this logical level.


The logical level tag includes the following child elements:

Table 11-8 Logical Level Child Elements

Element Name Description

ChildLevels

References the child levels that have been defined for this logical level.

Each child level is contained in a sub-element called RefLogicalLevel.

PreferredDrillDown

If a drill path has been defined that is outside the normal drill path defined by the dimension level hierarchy, this element references the level to which users should drill.

The preferred drill level is contained in a sub-element called RefLogicalLevel.

ParentKey

References the parent key for this level (for dimensions with parent-child hierarchies only).

The parent key is contained in a sub-element called RefLogicalKey.


Syntax

<LogicalLevel …
     isUniqueSourceKey=""
     isGTA=""
     isFDUC=""
     levelConst=""
     memberCount="">
   <Description />
   <ChildLevels>
     <RefLogicalLevel …/>
     <RefLogicalLevel …/>
   </Columns>
   <PreferredDrillDown>
     <RefLogicalLevel …/>
   </PreferredDrillDown>
   <ParentKey>
     <RefLogicalLevel …/>
   </ParentKey>
</LogicalLevel>

Example

<LogicalLevel name="Year"
     parentName="&quot;Sample Sales&quot;.&quot;H0 Time&quot;"
     parentId="2019:15"
     parentUid="1631"
     id="2025:538"
     uid="1638"
     isGTA="false"
     isFDUC="true"
     memberCount="3"
     levelConst="'Year'">
   <Description /> 
   <ChildLevels>
     <RefLogicalLevel uid="1639" id="2025:539" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;H0 Time&quot;.&quot;Half&quot;" /> 
   </ChildLevels>
</LogicalLevel>

11.5 Dimension

The dimension element corresponds to the dimension object in the Business Model and Mapping layer.

The dimension tag includes the following attributes:

Table 11-9 Dimension Tag Attributes

Attribute Name Description

isTimeDim

If set to true, indicates that this dimension is a time dimension.

isRagged

If set to true, indicates that this dimension hierarchy is unbalanced. An unbalanced hierarchy is one that contains levels that are not at the same depth.

isSkipped

If set to true, indicates that this dimension hierarchy is a skip-level hierarchy. A skip-level hierarchy is one in which there are members that do not have a value for a particular parent level.

isValueBased

If set to true, indicates that this object is a dimension with parent-child hierarchies. A parent-child hierarchy is a hierarchy of members that all have the same type. In a parent-child hierarchy, the inter-member relationships are parent-child relationships between dimension members.


The dimension tag includes the following child elements:

Table 11-10 Dimension Child Elements

Element Name Description

RootLevels

References the root level or levels of this dimension. Root levels are levels in the hierarchy that do not have any levels above them. In the Administration Tool, root levels appear directly below the dimension icon.

Each level is contained in a sub-element called RefLogicalLevel.

DefaultRootLevel

References the default root level of this dimension. When there are many root levels in a dimension, the default root level is the one that is used for drilldown.

The default root level is contained in a sub-element called RefLogicalLevel.


Syntax

<Dimension …
     isTimeDim=""
     isRagged=""
     isSkipped=""
     isValueBased="">
   <Description />
   <RootLevels>
     <RefLogicalLevel …/>
     <RefLogicalLevel …/>
   </RootLevels>
   <DefaultRootLevel>
     <RefLogicalLevel …/>
   </DefaultRootLevel>
</Dimension>

Example

<Dimension name="H6 Dim Fact Attributes" parentName="&quot;Sample Sales&quot;"
     parentId="2000:14"
     parentUid="519"
     id="2019:21"
     uid="63137"
     isValueBased="false"
     isRagged="false"
     isSkipped="false">
   <Description /> 
   <RootLevels>
     <RefLogicalLevel uid="63145" id="2025:569" qualifiedName="&quot;
     Sample Sales&quot;.&quot;H6 Dim Fact Attributes&quot;.&quot;Total&quot;" /> 
   </RootLevels>
   <DefaultRootLevel>
     <RefLogicalLevel uid="63145" id="2025:569" qualifiedName="&quot;
     Sample Sales&quot;.&quot;H6 Dim Fact Attributes&quot;.&quot;Total&quot;" /> 
   </DefaultRootLevel>
</Dimension>

11.6 Logical Table

The logical table element corresponds to the logical table object in the Business Model and Mapping layer.

The logical table tag includes the following attributes:

Table 11-11 Logical Table Tag Attributes

Attribute Name Description

isBridgeTable

In previous releases, this attribute was used to indicate whether the logical table is a bridge table. This attribute exists only for backward compatibility with previous releases.

isLookupTable

If set to true, indicates that this logical table is a lookup table.

Lookup tables are typically used to store fields that contain translations in several languages. Queries that require multilingual data join the base table and lookup table to obtain the translated values for each row in the base table.

x

The x coordinate of the table when it is shown in the business model diagrams.

y

The y coordinate of the table when it is shown in the business model diagrams.


The logical table tag includes the following child elements:

Table 11-12 Logical Table Child Elements

Element Name Description

LevelColumn

References the column that is used in the level that corresponds to this logical table.

Columns

References the logical columns that belong to this logical table.

Each logical column is contained in a sub-element called RefLogicalColumn.

TableSources

References the logical table sources for this logical table.

Each logical table source is contained in a sub-element called RefLogicalTableSource.


Syntax

<LogicalTable …
     isBridgeTable=""
     isLookupTable=""
     x=""
     y="">
   <Description />
   <LevelColumn>
     <RefLogicalColumn …/>
   </LevelColumn>
   <Columns>
     <RefLogicalColumn …/>
     <RefLogicalColumn …/>
   </Columns>
   <TableSources>
     <RefLogicalTableSource …/>
     <RefLogicalTableSource …/>
   </TableSources>
</LogicalTable>

Example

<LogicalTable name="D1 Customer" parentName="&quot;Sample Sales&quot;"
     parentId="2000:14"
     parentUid="519"
     id="2035:22"
     uid="742"
     x="353"
     y="139">   <Description>
     <![CDATA[ This logical table maps to the physical Customer Dimension table 
     with various attributes like Customer Name, Status, Type and so on. ]]> 
   </Description>
   <Columns>
     <RefLogicalColumn uid="776" id="2006:23" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C0 Cust Key&quot;" /> 
     <RefLogicalColumn uid="782" id="2006:24" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C1 Cust Name&quot;" /> 
     <RefLogicalColumn uid="788" id="2006:25" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C2 Cust Status&quot;" /> 
     <RefLogicalColumn uid="790" id="2006:26" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C3 Cust Type&quot;" /> 
     <RefLogicalColumn uid="784" id="2006:27" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C4 Customer Segment ID&quot;" /> 
     <RefLogicalColumn uid="63678" id="2006:28" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C5 Segment&quot;" /> 
     <RefLogicalColumn uid="786" id="2006:29" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C6 Cust Industry&quot;" /> 
     <RefLogicalColumn uid="774" id="2006:30" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C7 Credit Rate&quot;" /> 
     <RefLogicalColumn uid="778" id="2006:31" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C8 First Contact Date&quot;" /> 
     <RefLogicalColumn uid="780" id="2006:32" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;C9 Last Order Date&quot;" /> 
   </Columns>
   <TableSources>
     <RefLogicalTableSource uid="1168" id="2037:1661" qualifiedName="&quot;Sample 
     Sales&quot;.&quot;D1 Customer&quot;.&quot;&quot;01 Customer&quot;" /> 
   </TableSources>
</LogicalTable>

11.7 Logical Foreign Key

The logical foreign key element corresponds to the logical foreign key object in the Business Model and Mapping layer.

The logical foreign key tag includes the following attributes:

Table 11-13 Logical Foreign Key Tag Attributes

Attribute Name Description

type

The type of join. Valid values are Inner, LeftOuter, RightOuter, FullOuter, and FullOuterStitch.


The logical foreign key tag includes the following child elements:

Table 11-14 Logical Foreign Key Child Elements

Element Name Description

Columns

References the logical columns in the table that the foreign key references.

Each logical column is contained in a sub-element called RefLogicalColumn.

CounterPartKey

References the foreign key columns for this foreign key.

Each logical column is contained in a sub-element called RefLogicalColumn.

DrivingTable

If a driving table has been specified for this logical foreign key, this element references that logical table.

The driving table is contained in a sub-element called RefLogicalTable.


Syntax

<LogicalForeignKey …
     type=""
   <Description />
   <Columns>
     <RefLogicalColumn …/>
     <RefLogicalColumn …/>
   </Columns>
   <CounterPartKey>
     <RefLogicalKey …./>
   </CounterPartKey>
   <DrivingTable>
     <RefLogicalTable …/>
   </DrivingTable>
</LogicalForeignKey>

Example

<LogicalForeignKey name="Sales Facts_FKey"
     parentName="&quot;Paint&quot;.&quot;Sales Facts&quot;"
     parentId="2035:21"
     id="2033:202"
     uid="158"
     type="Inner">
   <Description /> 
   <Columns>
     <RefLogicalColumn id="2006:22" qualifiedName="&quot;Paint&quot;.&quot;Sales 
     Facts&quot;.&quot;MktKey&quot;" />
   </Columns>
   <CounterPartKey>
     <RefLogicalKey id="2008:199" qualifiedName="&quot;Paint&quot;.
     &quot;Markets&quot;.&quot;Market_Key&quot;" />
   </CounterPartKey>
</LogicalForeignKey>

11.8 Logical Key

The logical key element corresponds to the logical key object in the Business Model and Mapping layer.

The logical key tag includes the following attributes:

Table 11-15 Logical Key Tag Attributes

Attribute Name Description

isPrimary

If set to true, indicates that this key is the logical primary key for the table.

isForDrillDown

If set to true, indicates that this key is the key that is displayed when a user clicks to drill down.

isChronKey

If set to true, indicates that this key is a chronological key for a time dimension.


The logical key tag includes the following child elements:

Table 11-16 Logical Key Child Elements

Element Name Description

Columns

References the logical column that defines the key of the logical table.

The logical column is contained in a sub-element called RefLogicalColumn.


Syntax

<LogicalKey …
     isPrimary=""
     isForDrillDown=""
     isChronKey="">
   <Description />
   <Columns>
     <RefLogicalColumn …/>
   </Columns>
</LogicalKey>

Example

<LogicalKey name="RegKey"
     parentName="&quot;Paint&quot;.&quot;MarketDim&quot;.&quot;Region&quot;"
     parentId="2025:121"
     id="2008:183"
     uid="139"
     isPrimary="true"
     isForDrillDown="true">
   <Description /> 
   <Columns>
     <RefLogicalColumn id="2006:75" qualifiedName="&quot;Paint&quot;.
     &quot;Markets&quot;.&quot;Region&quot;" /> 
   </Columns>
</LogicalKey>

11.9 Logical Table Source

The logical table source element corresponds to the logical table source object in the Business Model and Mapping layer. See also the column mapping element, described in Section 11.9.1, "Column Mapping."

The logical table source tag includes the following attributes:

Table 11-17 Logical Table Source Attributes

Attribute Name Description

isDistinct

This attribute is used if the values for the logical table source are unique. In the Administration Tool, this option is called Select distinct values in the Content tab of the Logical Table Source dialog.

isDimOnly

If set to true, indicates that this source is the preferred logical table source for dimension-only queries. Dimension-only queries retrieve results from the dimension table without joining with the fact table, unlike normal queries, which always have at least one fact column in the query.

In the Administration Tool, this option is called Dimension Browse in the General tab of the Logical Table Source dialog.

isSysGen

If set to true, indicates that an internal utility such as the Aggregate Persistence Wizard has generated this logical table source.

canCombine

If set to true, indicates that this logical table source can be combined with other logical table sources to provide a full set of results. In the Administration Tool, this option is called This source should be combined with other sources at this level in the Content tab of the Logical Table Source dialog.

isActive

If set to true, indicates that this logical table source is active. In the Administration Tool, this attribute corresponds with the Disabled option in the General tab of the Logical Table Source dialog.

priorityGroup

Indicates the priority group number of this logical table source. Logical table source priority group numbers are assigned to indicate which logical table source should be used for queries for which there is more than one logical table source that can satisfy the requested set of columns.


The logical table source tag includes the following child elements:

Table 11-18 Logical Table Source Child Elements

Element Name Description

Link

References the set of physical tables to which the logical table source is mapped. These links are references to the physical joins that already exist. In the Administration Tool, this element corresponds with the Map to these tables section in the General tab of the Logical Table Source dialog.

Each link child element contains two sub-elements, StartNode and Joins:

  • The StartNode sub-element references the physical table identified by this link. It can contain the RefCubeTable, RefPhysicalTable, RefAWDimension, or RefAWCube sub-element, depending on your data source type.

  • The Joins sub-element defines the joins for this link. It contains different sub-elements, depending on the type of join. For example:

    RefCubeTable, RefPhysicalTable, RefAWCube, or RefAWDimension

    RefPhysicalForeignKey or RefComplexJoin

    DrivingTable, which contains a sub-element RefPhysicalTable

    The Joins sub-element has two attributes: type (Inner, LeftOuter, RightOuter, FullOuter, or FullOuterStitch) and cardinality (ONE TO ONE, ZERO OR ONE TO ONE, ONE TO ZERO OR ONE, ZERO OR ONE TO ZERO OR ONE, ONE TO MANY, ZERO OR ONE TO MANY, ZERO OR ONE TO MANY, MANY TO ONE, MANY TO ZERO OR ONE, or MANY TO MANY).

See the syntax for the logical table source element to see the complete hierarchy for the link child element.

WhereClause

If a WHERE clause filter has been defined, contains the WHERE clause expression that limits the number of rows the source uses in the resultant table. The expression is contained in a sub-element called Expr.

In the Administration Tool, this option is called Use this "WHERE clause" filter to limit rows returned (exclude the "WHERE") in the Content tab of the Logical Table Source dialog.

GroupBy

Contains the expression that defines whether the aggregation is grouped by logical level or by column. The expression is contained in a sub-element called Expr.

In the Administration Tool, this option is called Aggregation content, group by in the Content tab of the Logical Table Source dialog.

FragmentContent

Contains the expression that defines how the source is fragmented. The expression is contained in a sub-element called Expr.

This child element is used in conjunction with the canCombine attribute. In the Administration Tool, this option is called Fragmentation content in the Content tab of the Logical Table Source dialog.

ClosureTable

References the parent-child table, if any.

The parent-child table is contained in a sub-element called RefPhysicalTable.


Syntax

<LogicalTableSource …
     isDistinct=""
     isDimOlny=""
     isSysGen=""
     canCombine=""
     isActive=""
     priorityGroup="">
   <Description />
   <Link>
     <StartNode>
       <RefPhysicalTable …/>
     </StartNode>
     <Joins>
       <Join type="" cardinality="">
         <RefPhysicalTable …/>
         <RefPhysicalTable …/>
         <RefPhysicalForeignKey …/>
       </Join>
     </Joins>
   </Link>
   <WhereClause>
     <Expr>...</Expr>
   </WhereClause>
   <GroupBy>
     <Expr />
   </GroupBy>
   <FragmentContent>
     <Expr />
   </FragmentContent>
   <ClosureTable>
     <RefTable …/>
   </ClosureTable>
</LogicalTableSource>

Example

<LogicalTableSource name="WEEK, UPC, CITY"
     parentName="&quot;Paint&quot;.&quot;Sales Facts&quot;"
     parentId="2035:21"
     id="2037:368"
     uid="324"
     isActive="true">
   <Description />
   <Link>
     <StartNode>
       <RefPhysicalTable id="3001:550" qualifiedName="&quot;Paint&quot;...&quot;
       Fact&quot;" />
     </StartNode>
     <Joins>
       <Join type="Inner" cardinality="MANY TO ONE">
         <RefPhysicalTable id="3001:550" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;" />
         <RefPhysicalTable id="3001:560" qualifiedName="&quot;Paint&quot;&quot;...
         &quot;Market&quot;" />
         <RefPhysicalForeignKey id="3006:621" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;.&quot;fact_FKey#1&quot;" />
       </Join>
       <Join type="Inner" cardinality="MANY TO ONE">
         <RefPhysicalTable id="3001:550" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;" />
         <RefPhysicalTable id="3001:587" qualifiedName="&quot;Paint&quot;...
         &quot;Period&quot;" />
         <RefPhysicalForeignKey id="3006:625" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;.&quot;fact_FKey#2&quot;" /> 
       </Join>
       <Join type="Inner" cardinality="MANY TO ONE">
         <RefPhysicalTable id="3001:550" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;" />
         <RefPhysicalTable id="3001:601" qualifiedName="&quot;Paint&quot;...
         &quot;Product&quot;" />
         <RefPhysicalForeignKey id="3006:626" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;.&quot;fact_FKey#3&quot;" /> 
       </Join>
     </Joins>
   </Link>
   <Link>
     <StartNode>
       <RefPhysicalTable id="3001:601" qualifiedName="&quot;Paint&quot;...
       &quot;Product&quot;" />
     </StartNode>
     <Joins>
       <Join type="Inner" cardinality="ONE TO MANY">
         <RefPhysicalTable id="3001:601" qualifiedName="&quot;Paint&quot;...
         &quot;Product&quot;" />
         <RefPhysicalTable id="3001:550" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;" /> 
         <RefPhysicalForeignKey id="3006:626" qualifiedName="&quot;Paint&quot;...
         &quot;Fact&quot;.&quot;fact_FKey#3&quot;" /> 
       </Join>
     </Joins>
   </Link>
   <WhereClause>
     <Expr>
       <![CDATA[ "Paint"."".""."Market"."LevelX" = 'MARKET' AND "Paint".
       "".""."Product"."LevelX" = 'UPC' AND "Paint"."".""."Period"."LevelX" =
       'WEEK']]> 
     </Expr>
   </WhereClause>
   <GroupBy>
     <Expr /> 
   </GroupBy>
   <FragmentContent>
     <Expr /> 
   </FragmentContent>
</LogicalTableSource>

11.9.1 Column Mapping

The column mapping element does not correspond to any metadata repository object. It is only used in conjunction with the logical table source element. The column mapping element appears on its own in the XML schema (.xsd file), rather than as part of the logical table source element, so that the column mapping details are easier to read and update.

The column mapping tag includes the following child elements:

Table 11-19 Column Mapping Child Elements

Element Name Description

RefLogicalTableSource

References the logical table source to which this column mapping belongs. Each column mapping must specify one and only one logical table source.

LogicalColumn

Contains the expression that identifies the logical column for this column mapping. The expression is contained in a sub-element called Expr.

Expr

Contains the expression that identifies the physical column for this column mapping. Note that this Expr child element is different from the Expr sub-element that appears inside the LogicalColumn child element.


The column mapping tag does not include any attributes.

Syntax

<ColumnMapping>
   <RefLogicalTableSource …/>
   <LogicalColumn>
     <Expr>...</Expr>
   </LogicalColumn>
   <Expr>...</Expr>
</ColumnMapping>

Example

<ColumnMapping>
   <RefLogicalTableSource id="2037:368"
   qualifiedName="&quot;Paint&quot;.&quot;Sales Facts&quot;.&quot;
   WEEK, UPC, CITY&quot;" /> 
   <LogicalColumn>
     <Expr>
       <![CDATA[ "Paint"."Sales Facts"."ProdKey" ]]> 
     </Expr>
   </LogicalColumn>
   <Expr>
     <![CDATA[ "Paint"."".""."Fact"."ProdKey" ]]> 
   </Expr>
</ColumnMapping>

11.10 Logical Source Folder

The logical source folder element corresponds to the logical source folder object in the Business Model and Mapping layer. Logical source folders contain logical table sources.

The logical source folder element does not include any attributes or child elements, other than the default attributes and elements.

Syntax

<LogicalSourceFolder …>
   <Description />
</LogicalSourceFolder>

Example

<LogicalSourceFolder name="Sources"
     parentName="&quot;Paint&quot;.&quot;Sales Facts&quot;"
     parentId="2035:21"
     id="2046:100"
     uid="101">
   <Description /> 
</LogicalSourceFolder>

11.11 Measure Definition

The measure definition element stores the measure definition for a measure column. A measure column is usually in a fact table, can change for each record, and can be added up or aggregated in some way.

The measure definition tag includes the following attributes:

Table 11-20 Measure Definition Tag Attributes

Attribute Name Description

isCommutative

If set to true, indicates that the aggregation rule lets the server switch the order if it can increase the performance. For example, the following aggregation function is commutative:

A (B (x)) = B (A (x))

The measure definition tag does not include any child elements.

Syntax

<MeasureDefn …
     isCommutative="">
   <Description />
</MeasureDefn>

Example

<MeasureDefn name="Measure"
     parentName="&quot;Paint&quot;.&quot;Sales Facts&quot;.&quot;Dollars&quot;"
     parentId="2006:26"
     id="2048:105"
     uid="106"
     isCommutative="false">
   <Description />
</MeasureDefn>

11.12 Aggregation Rule

The aggregation rule element corresponds to the aggregation rule object in the Business Model and Mapping layer.

The aggregation rule tag includes the following attributes:

Table 11-21 Aggregation Rule Tag Attributes

Attribute Name Description

isDefault

If set to true, indicates that this is the default rule for aggregate calculations. This option only applies when there is more than one aggregation rule.


The aggregation rule tag includes the following child elements:

Table 11-22 Aggregation Rule Child Elements

Element Name Description

Expr

Contains the expression on which this aggregation rule is based.

BasedOnDimension

If this aggregation rule is specific to a particular dimension, references the dimension for which this aggregation rule applies.

The dimension is contained in a sub-element called RefDimension.


Syntax

<AggrRule …
     isDefault=""
     BasedOnDimension>
   <Description />
   <Expr>
     <![CDATA[…]]>
   </Expr>
</AggrRule>

Example

<AggrRule name="AggRule_2050:1121162340028"
     parentName="&quot;Paint&quot;.&quot;Sales Facts&quot;.&quot;Units&quot;.
     &quot;Measure&quot;"
     parentId="2048:104"
     id="2050:112"
     uid="113"
     isDefault="true">
   <Description />
   <Expr>
     <![CDATA[  SUM("Paint"."Sales Facts"."Units")]]> 
   </Expr>
</AggrRule>

11.13 Override Aggregation Rule

The override aggregation rule element corresponds to the override aggregation expression for a logical table source in the Business Model and Mapping Layer.

When you select Count Distinct as the default aggregation rule, you can specify an override aggregation expression for specific logical table sources. This option is useful when you have more than one logical table source mapped to a logical column and you want to apply a different aggregation rule to each source.

The override aggregation rule tag includes the following child elements:

Table 11-23 Override Aggregation Rule Child Elements

Element Name Description

RefLogicalTableSource

References the logical table source to which this override aggregation rule applies.

Expr

Contains the expression on which this aggregation rule is based.


The override aggregation rule tag does not include any attributes.

Syntax

<OverrideAggrRule …>
   <Description />
   <RefALogicalTableSource …/>
   <Expr>...</Expr>
</OverrideAggrRule>

Example

<OverrideAggrRule name="OvAggRule_2054:19221204534743"
     parentName="&quot;SnowflakeSales&quot;.&quot;SalesFacts&quot;.
     &quot;# Orders&quot;.&quot;Measure&quot;"
     parentId="2048:1752"
     id="2054:1922"
     uid="2147535332">
   <Description />
   <RefLogicalTableSource id="2037:7318" qualifiedName=
   "&quot;SnowflakeSales&quot;.&quot;SalesFacts&quot;.&quot;Order Header&quot;" />
   <Expr>
     <![CDATA[ COUNT("SnowflakeSales"."SalesFacts"."# Orders")]]>
   </Expr>
</OverrideAggrRule>

11.14 Logical Display Folder

The logical display folder element corresponds to the logical display folder object in the Business Model and Mapping layer.

The logical display folder tag includes the following child elements:

Table 11-24 Logical Display Folder Child Elements

Element Name Description

Dimensions

References the dimensions that belong to this logical display folder.

Each dimension is contained in a sub-element called RefDimension.

Tables

References the logical tables that belong to this logical display folder.

Each table is contained in a sub-element called RefLogicalTable.


The logical display folder element does not include any attributes.

Syntax

<LogicalDisplayFolder …>
   <Description />
   <Dimensions>
     <RefDimension …/>
     <RefDimension …/>
   </Dimensions>
   <Tables>
     <RefLogicalTable …/>
     <RefLogicalTable…/>
   </Tables>
</LogicalDisplayFolder>

Example

<LogicalDisplayFolder name="Fact Tables" parentName="&quot;SS- Time Series&quot;"
     parentId="2000:197"
     id="2052:3034"
     uid="2147609068"
     iconIndex="69">
   <Description />
   <Dimensions>
     <RefDimension id="2019:242" qualifiedName="&quot;SS- Time Series&quot;.
     &quot;Customer&quot;"/>
   </Dimensions>
   <Tables>
     <RefLogicalTable id="2035:1289" qualifiedName="&quot;SS- Time Series&quot;.
     &quot;SalesFacts&quot;"/>
     <RefLogicalTable id="2035:1511" qualifiedName="&quot;SS- Time Series&quot;.
     &quot;SalesPlan&quot;"/>
   </Tables>
</LogicalDisplayFolder>