Dimension files define the dimensions used in the model. A dimension is a logical collection of attributes that are bound to specific columns in a source dataset. These attributes are in turn used to group and filter metric data at query time.
SML supports the following types of dimensions:
-
Normal: Dimensions that are based on a dataset. All data for a normal dimension is normalized into a single table or view. There are two types of normal dimensions:
-
Standard: Can have any type of hierarchy.
-
Time: Must have a time hierarchy.
-
Degenerate: A dimension that is based on one or more columns in a fact dataset.
-
Shared degenerate: A dimension that is based on one or more columns that are common to two or more fact datasets.
-
Snowflake: A logical dimension that is composed of multiple underlying physical datasets.
-
Many-to-many: Also called multi-valued. This is when a fact dataset row refers to more than one row in a dimension dataset. In SML, this is modeled by defining a dimensional bridge or junction table to resolve the many-to-many relationship.
Sample dimension
file:
unique_name: Store Dimension
object_type: dimension
label: Store Dimension
type: standard
hierarchies:
- unique_name: Store Dimension
label: Store Dimension
folder: Store Attributes
filter_empty: "yes"
levels:
- unique_name: d_store_country
- unique_name: d_store_state
- unique_name: d_store_county
- unique_name: d_store_city
- unique_name: Store Dimension
secondary_attributes:
- unique_name: d_s_floor_space
label: Store Floor Space
folder: Store Attributes
dataset: store
name_column: s_floor_space
key_columns:
- s_floor_space
sort_column: s_floor_space
- unique_name: d_s_manager
label: Store Manager
folder: Store Attributes
dataset: store
name_column: s_manager
key_columns:
- s_manager
sort_column: s_manager
- unique_name: d_s_number_employees
label: Store Number of Employees
folder: Store Attributes
dataset: store
name_column: s_number_employees
key_columns:
- s_number_employees
sort_column: s_number_employees
- unique_name: d_store_company_id
label: Store Company ID
folder: Store Attributes
dataset: store
name_column: s_company_id
key_columns:
- s_company_id
sort_column: s_company_id
- unique_name: d_store_name
label: Store Name
folder: Store Attributes
dataset: store
name_column: s_store_name
key_columns:
- s_store_name
sort_column: s_store_name
level_attributes:
- unique_name: d_store_city
label: Store City
dataset: store
name_column: s_city
key_columns:
- s_country
- s_state
- s_city
- unique_name: d_store_country
label: Store Country
dataset: store
name_column: s_country
key_columns:
- s_country
- unique_name: d_store_county
label: Store County
dataset: store
name_column: s_county
key_columns:
- s_state
- s_county
- unique_name: d_store_state
label: Store State
dataset: store
name_column: s_state
key_columns:
- s_country
- s_state
- unique_name: Store Dimension
label: Store Number
is_unique_key: true
dataset: store
name_column: s_store_sk
key_columns:
- s_store_sk
classDiagram
Relationship *-- From
Relationship *-- To
Dimension *-- Relationship
Dimension *-- Hierarchy
Dimension *-- LevelAttribute
Dimension *-- CalculationGroup
Hierarchy *-- Level
LevelAttribute *-- CustomEmptyMember
Level *-- SecondaryAttribute
Level *-- MetricalAttribute
Level *-- Alias
CalculationGroup *-- CalculatedMembers
SecondaryAttribute *-- CustomEmptyMember
Alias *-- CustomEmptyMember
MetricalAttribute *-- CustomEmptyMember
namespace Dimensions{
class Dimension{
String unique_name
String label
const object_type
String description
enum type
Boolean is_degenerate
Array~Hierarchy~ hierarchies
Array~LevelAttribute~ level_attributes
Array~Relationship~ relationships
Array~CalculationGroup~ calculation_groups
}
class Relationship{
String unique_name
Object from
Object to
String role_play
String type
Boolean m2m
}
class From{
String dataset
Array~Column~ columns
}
class To{
String dimension
String level
String row_security
}
class Hierarchy{
String unique_name
String label
String folder
enum filter_empty
Array~Level~ levels
}
class Level{
String unique_name
String description
Array~SecondaryAttribute~ secondary_attributes
Array~Alias~ aliases
Array~MetricalAttribute~ metrics
String default_member
Boolean is_hidden
}
class Alias{
String unique_name
String label
String description
String dataset
String name_column
String sort_column
String folder
Boolean is_hidden
Boolean exclude_from_dim_agg
Boolean exclude_from_fact_agg
Array~CustomEmptyMember~ custom_empty_member
Array~String~ allowed_calcs_for_dma
Object role
}
class MetricalAttribute{
String unique_name
String label
String description
String folder
String format
String calculation_method
String dataset
String column
Boolean is_hidden
Boolean exclude_from_dim_agg
Boolean exclude_from_fact_agg
CustomEmptyMember custom_empty_member
enum unrelated_dimensions_handling
Array~String~ allowed_calcs_for_dma
}
class LevelAttribute{
String unique_name
String label
String description
String dataset
String name_column
String sort_column
Array~String~ key_columns
Boolean contains_unique_names
Boolean is_hidden
Boolean is_unique_key
Boolean exclude_from_dim_agg
Boolean exclude_from_fact_agg
String time_unit
Array~String~ allowed_calcs_for_dma
}
class SecondaryAttribute{
String unique_name
String label
String description
String folder
String dataset
String name_column
String sort_column
Array~String~ key_columns
Boolean exclude_from_dim_agg
Boolean exclude_from_fact_agg
Array~String~ allowed_calcs_for_dma
Array~CustomEmptyMember~ custom_empty_member
}
class CustomEmptyMember{
Array~String~ key
String name
String sort_name
}
class CalculationGroup{
String unique_name
String label
String description
String folder
Array~CalculatedMembers~ calculated_members
}
class CalculatedMembers{
String unique_name
String description
String format
String expression
Boolean use_input_metric_format
}
}
- Type: string
- Required: Y
The unique name of the dimension. This must be unique across all repositories and subrepositories.
- Type: const
- Required: Y
The type of object defined by the file. For dimensions, this value must
be dimension
.
- Type: string
- Required: Y
The name of the dimension, as it appears in the consunmption tool. This value does not need to be unique.
- Type: string
- Required: N
A description of the dimension.
- Type: string
- Required: N
The name of the folder in which the calculation group appears in BI tools.
- Type: enum
- Required: N
The type of dimension defined by this file.
Supported values:
standard
: Can have any type of hierarchy.time
: Must have a time hierarchy.
- Type: array
- Required: Y
Defines the hierarchies within the dimension.
Hierarchies organize the dimension attributes into categories or levels, where each level is a subdivision of the level above. Every logical dimension you create has at least one hierarchy with at least one level.
- Type: array
- Required: Y
Level attributes are attributes associated with a particular dimension hierarchy. Every hierarchy has a key level attribute, which is the most granular representation of the dimension's data. Only level attributes can be used to define relationships between datasets and other dimensions.
- Type: array
- Required: N
The relationships
property in a dimension file defines the
relationships to embedded and snowflake dimensions.
Note: The relationships between the model's fact datasets and first order dimensions (fact relationships) are defined in model files.
- Type: array
- Required: N
The calculation_groups
property in a dimension file defines
calculation groups to use in the dimension.
Dimension calculation groups offer a simplifying alternative to calculated metrics by enabling the expression of boiler-plate calculations across multiple metrics. This feature defines calculations as dimension members and removes static references to individual measures.
- Type: string
- Required: N
The unique name of the relationship. This must be unique within the dimension.
- Type: object
- Required: Y
Defines the side of the relationship that contains the physical dataset that you want to connect to another dimension.
Supported properties:
dataset
: String, required. The physical dataset you want to link to a dimension.join_columns
: Array, required. The column(s) within thedataset
that you want to use for the join.hierarchy
: String, optional. The hierarchy within the dimension from which the relationship should originate.level
: String, optional. The level within thehierarchy
from which the relationship should originate.
For snowflake relationships (as defined by the type
property), you
only need to define dataset
and join_columns
.
- Type: object
- Required: Y
Defines the dimension that the from
dataset is linked to.
Supported properties:
dimension
: String. The name of the dimension thefrom
dataset is linked to.level
: String, required ifrow_security
is undefined. The key level within the dimension to use for the relationship.row_security
: String, required iflevel
is undefined. For security relationships, the row security object that thefrom
dataset is linked to.
For snowflake relationships (as defined by the type
property), you
only need to define level
.
- Type: string
- Required: Y
Defines the relationship as either embedded or snowflake.
Supported values:
embedded
: A secondary relationship, or one that connects a primary dimension to a secondary dimension.snowflake
: A relationship that connects one of several underlying physical datasets together to create a snowflake dimension.
- Type: string
- Required: N
For role-playing relationships only. Defines the role-playing template for the relationship.
The role-playing template is the prefix or suffix that is added to every attribute in the role-played dimension. You can also specify both a prefix and a suffix.
This value must be in one of the following formats (including quotation marks):
- Prefix:
"<prefix> {0}"
- Suffix:
"{0} <suffix>"
- Prefix and suffix:
"<prefix> {0} <suffix>"
For example, if you wanted to use the prefix Order, you would set
role_play
to "Order {0}"
.
- Type: string
- Required: Y
The name of the calculation group. This must be unique within the dimension.
- Type: string
- Required: Y
The name of the calculation group, as it appears in the BI consumer. This value does not need to be unique.
- Type: array
- Required: Y
Defines the individual calculated members in the group.
Note: The first in the list is considered the default member of the group.
- Type: string
- Required: N
A description of the calculation group.
- Type: string
- Required: Y
The name of the calculated member. This must be unique within the dimension.
- Type: string
- Required: N
A description of the calculated member.
- Type: string
- Required: Required if
expression
is not specified.
Sets the calculation to one of SML's built-in MDX expression templates.
Supported templates:
Current
, Previous
, Current vs Previous
, Current vs Previous Pct
, Next
, Current vs Next
, Current vs Next Pct
, Pct of Total
, Pct of Parent
, Last Year
, Current vs Last Year
, Current vs Last Year Pct
, Year to Date
, Quarter to Date
, Month to Date
, Month Moving Average 3 Month
, Moving Average 30 Period
, Moving Average 5 Period
, Moving Std Dev 30 Period
, Moving Std Dev 5 Period
If you do not want to use a built-in template, you can define a custom expression using the expression
property (see below).
- Type: string
- Required: Required if
template
is not specified.
The MDX expression for the calculated member. This value should be quoted.
Note: If you plan on referencing a calculation via the Aggregate
MDX function in your calculated member, ensure that the computed metric has an aggregation function set. You can do this by including the mdx_aggregation_function
property in the calculation file. If you do not set an aggregation function, you may encounter errors at query time.
You can alternatively use the template
property (see above) to use one of SML's built-in MDX expression templates instead of a custom one.
- Type: String
- Required: N
The format in which query results are returned. You can use one of SML's built-in named formats or a custom format string.
Supported named formats:
fixed
,general number
, none
, percent
, scientific
, standard
Custom format strings should be in quotes and contain one to four sections, separated by semicolons.
You can alternatively configure the calculated member to return results in the format defined for input metric by including the use_input_metric_format
property (see below).
- Type: boolean
- Required: N
When true
, query results always use the formatting defined for the input metric. This is useful for calculations that can't have a standard output format.
When false
, the results are formatted according to the format
property.
- Type: string
- Required: Y
The unique name of the hierarchy. This must be unique within the dimension.
- Type: string
- Required: Y
The name of the hierarchy. This value does not need to be unique.
- Type: string
- Required: N
A description of the hierarchy.
- Type: string
- Required: N
The name of the folder in which to display this hierarchy in BI tools. If your model has a lot of dimensional hierarchies, folders are a good way to organize them.
- Type: string
- Required: N
Configures the join behavior for the hierarchy, which determines how empty values are handled in client BI tools. The value you specify must be in quotes.
Supported values:
-
yes
: Query results in BI tools only include members that join to the fact dataset (inner join behavior). Members with no matching entries in the fact dataset are still included if the client BI tool requests them. -
no
: Query results include all members of the dimension, even those that have no matching entries in the fact dataset (outer join behavior). This occurs unless the client BI tool specifically requests to have these values filtered out. -
always
: Query results only include members that join to the fact dataset (inner join behavior). This typically provides the best performance.
- Type: object
- Required: N
Defines a default member for the hierarchy. Default members of dimensional hierarchies serve together as a default filter for MDX queries on the model.
When adding default hierarchies, be aware of the following:
- If a query specifies a level in a hierarchy that has a default member, the default is not used.
- Default hierarchy members are not used in queries that populate select fields and filter dialogs in BI clients.
- You cannot specify secondary attributes as default dimension members. Doing so will cause queries to fail.
- Setting default members on dimensions with multiple hierarchies can produce unexpected results, as it is easy to forget about the default member filtering on another hierarchy.
default_member
supports the following properties:
expression
: String, required. An MDX expression that specifies the default member. This value must be quoted.apply_only_when_in_query
: Boolean, optional. Whentrue
, the default hierarchical member is only applied when it is explicitly included in a query. This enables you to selectively apply default constraints for meta dimensions (calculation groups or similar dimensions) that represent calculations or parameters, rather than data.
- Type: array
- Required: Y
Defines the levels within the hierarchy. You can include as many levels as needed in the list.
- Type: string
- Required: Y
Specifies the unique name of the level. This must be unique within the dimension.
- Type: array
- Required: N
Defines secondary attributes for the dimension level. Secondary attributes are dimensional attributes that are not the dimension's key, and are not part of a hierarchy.
SML supports the following types of secondary attributes:
- Dimensional: Provides an independent "dimensional" attribute for grouping metric data. This is the default type of secondary attribute.
- Level alias: Enables the creation of tabular reports that select hierarchical expressions without forcing the user to drill down a hierarchy.
Note: Secondary attributes cannot be used to create relationships between datasets and dimensions.
- Type: array
- Required: N
Defines secondary attributes that can be used as aliases for specific hierarchy levels within BI tools.
- Type: array
- Required: N
Defines metrics for the level.
- Type: array
- Required: N
For levels in time dimensions only. Defines a custom parallel period for the level. You can use custom parallel periods to compare members in different levels of a time hierarchy that aren't in the same relative child position; for example, the last week of a 53-week year to that of a 52-week year.
You can define as many parallel periods for a level as needed.
- Type: string
- Required: Y
The unique name of the secondary attribute. This must be unique within the dimension.
- Type: string
- Required: Y
The name of the secondary attribute, as it appears in the BI consumer. This value does not need to be unique.
- Type: string
- Required: N
A description of the secondary attribute.
- Type: string
- Required: N
The name of the folder in which the attribute is displayed in BI tools.
is_hidden
- Type: boolean
- Required: N
Determines whether the attribute is visible in BI tools.
Supported values:
false
(default)true
- Type: boolean
- Required: N
Determines whether each member of this attribute has a unique name. Do not enable this functionality if two members have different keys but the same name.
Supported values:
true
false
- Type: string
- Required: Y
The dataset that contains the key_columns
the secondary attribute is based on.
- Type: string
- Required: Y
The dataset column that the attribute is based on.
- Type: array
- Required: Y
A list of the key columns that the attribute is based on. If the attribute has a compound key, you should specify all columns that make up the key as a list.
- Type: array
- Required: N
The column used to sort the attribute's values in result sets. (This only applies to MDX queries.)
- Type: array
- Required: N
A list of the calculation types that can be used to create dimensionally modified aggregates for the secondary attribute. Note that when working with a time dimension, you can only define calculation types if the time_unit
property for the level is set to day
or longer.
- Type: boolean
- Required: N
Excludes this attribute from system generated dimension-only aggregates. This is useful if the attribute contains a large number (millions) of distinct values that you don't want to aggregate.
- Type: boolean
- Required: N
Determines whether the attribute's member values can be aggregated. When enabled, an All
member is created for the attribute, whose value is the aggregation of all of the attribute's member values. The All
member sits at the top of the attribute's hierarchy, though it is not a part of the attribute itself. It often serves as the attribute's default member.
- Type: boolean
- Required: N
Excludes this attribute from system generated fact-based aggregates. This is useful if the attribute contains a large number (millions) of distinct values that you don't want to aggregate.
- Type: array
- Required: N
Defines a custom empty member for the attribute. This feature allows fact data with missing or invalid foreign key values to be isolated and independently aggregated from those with valid foreign key values. Because fact records with invalid foreign keys are aggregated separately from records referencing valid dimension members, analysts can easily spot data integrity problems and further investigate them. Use this feature to ensure that un-joinable values are included in query results and aggregated under a specially designated dimension member called the Custom Empty Member.
- Type: String
- Required: Y
The unique name of the alias. This must be unique within the dimension.
- Type: String
- Required: Y
The name of the alias as it appears in the consunmption tool and BI tools. This value does not need to be unique.
- Type: String
- Required: N
A description of the alias.
- Type: String
- Required: N
The name of the folder in which the alias appears in BI tools.
- Type: String
- Required: N
The format in which query results are returned. You can use one of SML's built-in named formats or a custom format string.
Supported named formats:
fixed
,general number
, none
, percent
, scientific
, standard
Custom format strings should be in quotes and contain one to four sections, separated by semicolons.
- Type: String
- Required: Y
The source dataset that contains the column that the alias is based on.
- Type: String
- Required: Y
The dataset column that the alias is based on.
- Type: String
- Required: Y
The column to use to sort the values in result sets. This applies to MDX queries only (queries received through the XMLA interface).
is_hidden
- Type: boolean
- Required: N
Determines whether the alias is visible in BI tools.
Supported values:
true
false
- Type: boolean
- Required: N
Excludes this level attribute from system generated dimension-only aggregates. This is useful if the alias contains a large number (millions) of distinct values that you don't want to aggregate.
Supported values:
true
false
- Type: boolean
- Required: N
Determines whether the alias's member values can be aggregated. When enabled, an All
member is created for the alias, whose value is the aggregation of all of the alias's member values. The All
member sits at the top of the alias's hierarchy, though it is not a part of the alias itself. It often serves as the alias's default member.
- Type: boolean
- Required: N
Excludes this level attribute from system generated fact-based aggregates. This is useful if the alias contains a large number (millions) of distinct values that you don't want to aggregate.
Supported values:
true
false
- Type: object
- Required: N
Defines custom empty member values for the alias. This feature allows fact data with missing or invalid foreign key values to be isolated and independently aggregated from those with valid foreign key values. Because fact records with invalid foreign keys are aggregated separately from records referencing valid dimension members, analysts can easily spot data integrity problems and further investigate them. Use this feature to ensure that un-joinable values are included in query results and aggregated under a specially designated dimension member called the Custom Empty Member.
- Type: String
- Required: Y
The unique name of the metrical attribute. This must be unique within the dimension.
- Type: String
- Required: Y
The name of the metrical attribute as it appears in the consunmption tool. This value does not need to be unique.
- Type: String
- Required: N
A description of the metrical attribute.
- Type: String
- Required: N
The name of the folder in which the metrical attribute appears in BI tools.
- Type: String
- Required: N
The format in which query results are returned. You can use one of SML's built-in named formats or a custom format string.
Supported named formats:
fixed
,general number
, none
, percent
, scientific
, standard
Custom format strings should be in quotes and contain one to four sections, separated by semicolons.
- Type: String
- Required: Y
The source dataset that contains the column that the metrical attribute is based on.
- Type: String
- Required: Y
The dataset column that the metrical attribute is based on.
- Type: string
- Required: Y
The calculation to apply to the data.
Supported values:
average
, count distinct
,count non-null
, estimated count distinct
, maximum
, minimum
,
percentile
, stddev_pop
, stddev_samp
, sum
, var_pop
,var_samp
is_hidden
- Type: boolean
- Required: N
Determines whether the alias is visible in BI tools.
Supported values:
true
false
- Type: boolean
- Required: N
Excludes this level attribute from system generated dimension-only aggregates. This is useful if the metrical attribute contains a large number (millions) of distinct values that you don't want to aggregate.
Supported values:
true
false
- Type: boolean
- Required: N
Determines whether the metrical attribute's member values can be aggregated. When enabled, an All
member is created for the attribute, whose value is the aggregation of all of the attribute's member values. The All
member sits at the top of the attribute's hierarchy, though it is not a part of the attribute itself. It often serves as the metrical attribute's default member.
- Type: boolean
- Required: N
Excludes this level attribute from system generated fact-based aggregates. This is useful if the metrical attribute contains a large number (millions) of distinct values that you don't want to aggregate.
Supported values:
true
false
- Type: object
- Required: N
Defines custom empty member values for the metrical attribute. This feature allows fact data with missing or invalid foreign key values to be isolated and independently aggregated from those with valid foreign key values. Because fact records with invalid foreign keys are aggregated separately from records referencing valid dimension members, analysts can easily spot data integrity problems and further investigate them. Use this feature to ensure that un-joinable values are included in query results and aggregated under a specially designated dimension member called the Custom Empty Member.
- Type: enum
- Required: N
Determines how the query engine behaves when all of the following conditions are true:
- A client queries a model that contains multiple fact datasets.
- The data in each fact dataset are at a different level of granularity than the data in the other fact datasets.
- The query references dimensions that are not related to the metrics being queried.
Supported values:
error
: Query Engine rejects the query and returns an error message.empty
: Query Engine displays empty cells in the query results.repeat
: In the query results, Query Engine repeats the values for the secondary metrical attribute at a level of aggregation that is determined from the shared dimensions in the query.
- Type: string
- Required: Y
The level to compare the current level to. Both levels must be in the same time hierarchy.
- Type: array
- Required: Y
The key column(s) in the dimension's source table that contain key values pointing to the desired parallel period.
- Type: string
- Required: Y
The unique name of the level attribute. This must be unique within the dimension.
- Type: string
- Required: Y
The name of the level attribute, as it appears in the consumption tool. This value does not need to be unique.
- Type: string
- Required: Required if
shared_degenerate_columns
is not specified.
The source dataset that contains the columns that this level attribute is based on.
- Type: string
- Required: Required if
shared_degenerate_columns
is not specified.
The column whose values appear for this level in BI tools. For example, the key may be a product ID number, but you want users to see product names instead.
- Type: array
- Required: Required if
shared_degenerate_columns
is not specified.
The dataset column that the level attribute is based on. If the level has a compound key, list all columns that make up the key.
If the key consists of one column, the values in that column must be unique. If the key is a compound key, the columns together must provide unique values.
- Type: array
- Required: Required if
dataset
,name_column
, andkey_columns
are not specified.
Defines the dimension as a shared degenerate dimension (one composed of data from multiple fact datasets).
Shared degenerate dimensions must meet the following requirements:
-
You must use the same number of columns from each fact dataset.
-
The data types across the columns used must be consistent:
- The name columns must all have the same data type.
- The key columns must all have the same data type.
-
If you set a sort column on one dataset, you must set them on all other datasets. Additionally, all sort columns on all datasets must have the same data type.
-
If an order column is selected in one dataset, the order column from each of the other fact datasets must also be selected.
-
For shared degenerate dimensions with multiple levels, all levels must be defined using the same datasets as the other levels.
-
Shared degenerate dimensions cannot contain secondary attributes.
Supported properties:
dataset
: String, required. A fact dataset the shared degenerate dimension is based on.name_column
: String, required. The column from the dataset whose values appear for the dimension in the consumption tool. For example, you can use a product ID column as theykey_columns
, but use a product name column as thename_column
. All name columns must have the same data type.key_columns
: Array, required. The column from the dataset that the shared degenerate dimension is based on. You can only include onekey_columns
value per dataset. All key columns must have the same data type.sort_column
: String, optional. Defines the column from the dataset that is used to sort query results. If this property is specified for one dataset, it must be specified for all others. Additionally, all sort columns must have the same data type.is_unique_key
: Boolean, optional. Determines whether values of thekey_columns
column are unique for each row.
For example:
level_attributes:
- unique_name: Order Degen Shared Level
label: Order Degen Shared Level
shared_degenerate_columns:
- name_column: salesordernumber
key_columns:
- salesordernumber
sort_column: salesordernumber
dataset: factinternetsales
is_unique: false
- name_column: productkey
key_columns:
- productkey
sort_column: productkey
dataset: dimproduct
is_unique: false
- Type: string
- Required: N
A description of the level attribute.
is_hidden
- Type: boolean
- Required: N
Determines whether the level attribute is visible in BI tools.
Supported values:
true
false
- Type: boolean
- Required: N
Determines whether the key_columns
values are unique for each row.
Supported values:
true
: The key column values are unique for each row. The join behavior considers the first matching row at query runtime.false
: The key column values are multi-valued. The join behavior considers all matching rows at query runtime.
- Type: boolean
- Required: N
Determines whether each member of this level attribute has a unique name. Do not enable this functionality if two members have different keys but the same name.
Supported values:
true
false
- Type: boolean
- Required: N
Excludes this level attribute from system generated dimension-only aggregates. This is useful if the attribute contains a large number (millions) of distinct values that you don't want to aggregate.
Supported values:
true
false
- Type: boolean
- Required: N
Determines whether the level attribute's member values can be aggregated. When enabled, an All
member is created for the attribute, whose value is the aggregation of all of the attribute's member values. The All
member sits at the top of the attribute's hierarchy, though it is not a part of the attribute itself. It often serves as the level attribute's default member.
- Type: boolean
- Required: N
Excludes this level attribute from system generated fact-based aggregates. This is useful if the attribute contains a large number (millions) of distinct values that you don't want to aggregate.
Supported values:
true
false
- Type: string
- Required: N
Defines the column to sort query results on. By default, this is the
name_column
; however, you can optionally use this property to specify
a different column.
Note: This only applies to MDX queries (queries received through the XMLA interface).
- Type: array
- Required: N
A list of the calculations that can be used when creating dimensionally modified aggregates for the level attribute.
- Type: string
- Required: N
The name of the folder in which this level attribute appears in BI tools.
- Type: string
- Required: N
For time dimensions only. The unit of time to use.
Supported values:
year
, halfyear
, trimester
, quarter
, month
,
week
, day
, hour
, minute
, second
, undefined
- Type: array
- Required: Y
A list of the empty member values to use for key fields.
- Type: string
- Required: Y
The empty member value to use for name fields.
- Type: string
- Required: N
The empty member value to use for the attribute's sort column, if one is specified.