Syntax common to Apply functions
Apply Function Name ("expression with placeholders", Arg1, Arg2, Arg3, …ArgN)
where:
-
Apply Function Name – is a generic name used for the predefined pass-through functions described above
-
expression with placeholders – is the string describing the actual expression or syntax that the engine uses while generating the SQL and which is sent to the RDBMS. The placeholders are represented by #0, #1, and so on. "#" is a reserved character for MicroStrategy.
-
Arg – is an argument that replaces the parameter markers in the pattern. Arg1 replaces #0, Arg2 replaces #1, and so on.
There are five pre-defined Apply functions to replace regular, predefined functions of the same type. For more details, click the link corresponding to each function.
• To use # as a character rather than a placeholder, use four # characters in a row. See the syntax below for an example.
ApplyComparison(UPPER(#0) like
‘Z####%’, Country@DESC)
The SQL for the function is:
Select a.11[COUNTRY_ID] AS COUNTRY_ID
from [LU_COUNTRY] a11
where upper(a11.[COUNTRY_NAME])
like ‘Z#%’
• Do not use form groups for the attribute form expression when using Apply functions, because form groups are ignored by the Analytical Engine. Instead, use a single form. For example, instead of using Customer@Name, where Name is defined to contain Customer’s first name, middle name, and last name, use ID or any other single form.
Apply Function Name – is a generic name used for the predefined pass-through functions described above
expression with placeholders – is the string describing the actual expression or syntax that the engine uses while generating the SQL and which is sent to the RDBMS. The placeholders are represented by #0, #1, and so on. "#" is a reserved character for MicroStrategy.
Arg – is an argument that replaces the parameter markers in the pattern. Arg1 replaces #0, Arg2 replaces #1, and so on.
There are five pre-defined Apply functions to replace regular, predefined functions of the same type. For more details, click the link corresponding to each function.
ApplyComparison(UPPER(#0) like
‘Z####%’, Country@DESC)
Select a.11[COUNTRY_ID] AS COUNTRY_ID
from [LU_COUNTRY] a11
where upper(a11.[COUNTRY_NAME])
like ‘Z#%’
ApplySimple
The ApplySimple
function is a single-value function. It is used to insert any single-value, database-specific functions and simple operators directly into SQL.
In general, ApplySimple
can be used to create the following objects:
• Attribute form
For any Apply function, the attribute form in the arguments should be a single form—not a form group. The engine ignores any definitions based on attribute forms.
• Consolidation
• Custom group
• Fact
• Metric
• Subtotal
• Transformation
ApplySimple
can be used to create the following objects:Example 1 Using an attribute
ApplySimple ("Datediff (YY, #0,getdate ())", [BIRTH_DATE])
Case( ([Order Type]@ID="V") AND ([Order Form]@ID="Visa"), "Visa", "Other")
ApplySimple("Case WHEN #0 ='ABC' THEN 'ABC' ELSE 'Competitive' END", StudioName)
Case( ([Order Type]@ID="V") AND ([Order Form]@ID="Visa"), "Visa", "Other")
Example 2 Using an attribute
ApplySimple ("Months_between (sysdate,#0)",[CURRENT_DT])
Example 3 Using a compound metric
You can use the "ApplySimple" function in a metric definition in order to calculate the greatest of a given number of values. The syntax is as follows:
ApplySimple ("Greatest (#0, #1, #2)", Metric_1, Metric_2,Metric_3)
Example 4
You need to display the values of Revenue that lie between 0 and 100,000 as "Low", between 100,001 and 200,000 as "Medium", and above 200,000 as "High." You can use the ApplySimple function in a metric definition as follows:
ApplySimple (" CASE WHEN #0 between 0 and 100000 THEN 'Low' WHEN #0 between 100001 and 200000 THEN 'Med' ELSE 'High' END ", Sum (Revenue){~})
Example 5 Rounding
You can use the ApplySimple function in a metric definition to round off the resulting values to a certain number of decimal places. In SQL Server 2000, the syntax is as follows:
("ROUND (#0,1)", [M3])
where M3 is the metric and 1 is the number of decimal places to round to.
Example 6 CASE statement
You can implement an "If/Then" scenario by using ApplySimple. In the string below, M1=Max (Employee) and Dollar Sales is a metric.
ApplySimple ("CASE WHEN #0>10 THEN #1 ELSE ’0’ END", [M1], [DOLLAR SALES])
ApplySimple a
ccepts facts, attributes, and metrics as input.
Expression type Examples
Attribute
ApplySimple(“Datediff(YY,#0,getdate())”, [BIRTH_DATE]), in which [BIRTH_DATE] is an attribute
ApplySimple(“Months_between(sysdate,#0)”,[CURRENT_DT]), in which [CURRENT_DT] is an attribute
Compound Metric
ApplySimple(“Greatest(#0,#1,#2)”, Metric_1, Metric_2,Metric_3)
ApplySimple(" CASE WHEN #0 between 0 and 100000 THEN 'Low' WHEN #0 between 100001 and 200000 THEN 'Med' ELSE 'High' END ", Sum(Revenue){~})
Examples in custom expressions
• ApplySimple("Datediff(YY,#0,getdate())", [BIRTH_DATE])
• ApplySimple("Months_between(sysdate,#0)", [CURRENT_DT])
Examples: Incorrect usage
• ApplySimple("Sum(#0)",[Column 1])
• ApplySimple("Count(#0)",[Column 2])
The two examples immediately above are incorrect and should not be used in your application because of the following two reasons:
• ApplySimple is a single-value function and therefore can only be used with single-value functions. Sum and Count are both group-value functions and therefore should not be used with ApplySimple.
• Sum and Count are both MicroStrategy functions and are not database-specific; therefore, they should not be used with ApplySimple or any other Apply functions.
ApplySimple a
ccepts facts, attributes, and metrics as input.
Attribute
ApplySimple(“Datediff(YY,#0,getdate())”, [BIRTH_DATE]), in which [BIRTH_DATE] is an attribute
ApplySimple(“Months_between(sysdate,#0)”,[CURRENT_DT]), in which [CURRENT_DT] is an attribute
Compound Metric
ApplySimple(“Greatest(#0,#1,#2)”, Metric_1, Metric_2,Metric_3)
ApplySimple(" CASE WHEN #0 between 0 and 100000 THEN 'Low' WHEN #0 between 100001 and 200000 THEN 'Med' ELSE 'High' END ", Sum(Revenue){~})
ApplySimple("Datediff(YY,#0,getdate())", [BIRTH_DATE])
ApplySimple("Months_between(sysdate,#0)", [CURRENT_DT])
ApplySimple("Sum(#0)",[Column 1])
ApplySimple("Count(#0)",[Column 2])
Example 6: Applysimple in a filter
Applysimple in a filter data for this year and last year when the year attribute is available.
- Right click in the filters folder or any where in MSTR Developer and select Filter.
- Select Empty Filter in the New Filter dialogue box.
- Now drag the Year attribute into the filter Editor.
- Select ID in the qualify on dropdown
- Select Between in the Operator dropdown.
- Now you will have two text boxes with Value selected in the corresponding dropdown as shown below:
- Now change the dropdowns from Value to Custom
- Enter similar to the below validated applysimple definition in the first custom entry: ApplySimple("(select max(YEAR)-1 from LKUP_ENTRY_DATE_TABLE)",0)
- Enter similar to the below validated applysimple definition in the second custom entry: ApplySimple("(select max(YEAR) from LKUP_SD_ENTRY_DATE_TABLE)",0)
- Click on OK.
- See the screenshot below: You can use this filter on a report with year attribute to filter the data to only last year and this year.
ApplyAgg
The ApplyAgg
function is used to define simple metrics or facts by using database-specific, group-value functions. The ApplyAgg
function itself is a group-value function and accepts facts, attributes, and metrics as input.
Syntax
ApplyAgg()
Accepts facts, attributes, and metrics as input.
All placeholders must begin with #0 and increase in increments of 1.
ApplyAgg(“Regrsxx(#0,#1)”, [Argument 1], [Argument 2]
{~+}
ApplyAgg
function is used to define simple metrics or facts by using database-specific, group-value functions. The ApplyAgg
function itself is a group-value function and accepts facts, attributes, and metrics as input.ApplyAgg()
ApplyAgg(“Regrsxx(#0,#1)”, [Argument 1], [Argument 2]
{~+}Example1
ApplyAgg("Regrsxx(#0,#1)", [Argument 1], [Argument 2] {~+})
Example 2 ApplyAgg with CASE
You want to create a metric to sum only those values that have an attribute tag set to a desired value. For instance, there exists an attribute that lists a payment as received, or not received, You want to create a metric counts how much money is owed.
It is necessary to sum all values where the payment is listed as not received, and consider the others as being equal to zero. You can accomplish this by using the following ApplyAgg function:
ApplyAgg ("sum (case when #1 in (’received’) then 0 else #0 end)", [monetary_based_fact],[Other_fact])
With Attribute and metric in metric:
ApplyAgg("sum (case when #0 = '10' then #1 else '0' end)", Max(Format@ID) {~} , [Gross USD]) {~}
With Attribute and metric in metric:
ApplyComparison
ApplyComparison
is used to define a filter by populating the WHERE
clause in the SQL passed to your RDBMS, and can take facts, attributes, and metrics as input.
The ApplyComparison
function is used with RDBMS comparison operators such as >
, like
, and In
.
Depending on your MicroStrategy product and licensing, this function may not be available.
Syntax
ApplyComparison()
ApplyComparison ("#0>#1", Store@ID,2)
ApplyComparison
function is used with RDBMS comparison operators such as >
, like
, and In
.ApplyComparison()
ApplyComparison ("#0>#1", Store@ID,2)
Example 2
ApplyComparison ("#0 between #1 and #2",? [Value Prompt Date], [Order Date]@ID, [Ship Date]@ID)
Example 3
ApplyComparison ("#0>#1", Store@ID, Month@ID)
ApplyLogic
The ApplyLogic
function is used to define custom filters. It is used with logical operators such as AND
and OR
. ApplyLogic
is a logical function.
Syntax
ApplyLogic()
Accepts logic (Boolean) values as input.
ApplyLogic(“#0 and #1”, Year@ID>2003, Month@ID>200301)
ApplyLogic()
ApplyLogic(“#0 and #1”, Year@ID>2003, Month@ID>200301)
ApplyOLAP
OLAP functions are group-value functions that take a set of data as input and generate a set of data as output, usually reordering the set according to some criteria.
ApplyOLAP
is the MicroStrategy Apply function tool used for OLAP functionality when you wish to use the native capabilities of your RDBMS. It is used to define compound metrics via database-specific functions such as Rank()
. ApplyOLAP
, like ApplySimple
, is used to define metrics but differs in that it only accepts metrics as input.
Syntax
A
pplyOLAP()
Accepts only metrics as input.
Example
ApplyOLAP
is the MicroStrategy Apply function tool used for OLAP functionality when you wish to use the native capabilities of your RDBMS. It is used to define compound metrics via database-specific functions such as Rank()
. ApplyOLAP
, like ApplySimple
, is used to define metrics but differs in that it only accepts metrics as input.A
pplyOLAP()ApplySimple in Dossier
Creating Calculated Members in Hierarchy Reports Using MDX Expressions
To Create Calculated Members Using MDX Expressions
To Create Calculated Members Using MDX Expressions
- Open the dossier you want to modify.
- Right-click an element in the grid and select Calculated Member. The Calculated Member dialog opens. The parent element appears in Parent.
- In Name, enter a name for the calculated member.
- In the MDX Expression, enter arguments for the Apply Simple function. This function allows you to enter an MDX expression, within the quotes, to create a calculated member. You can type arithmetic operators (such as + and -) and values directly in the expression.
Create a calculated member for the previous year.
ApplySimple("ParallelPeriod([Date].[Calendar].[Calendar Year], 1, [Date].[Calendar].[Calendar Year].[CY 2018])")
- You can add hierarchical elements from the left pane to the MDX expression. Expand the hierarchies in the left pane to locate the hierarchical elements you want to add. Then, double-click or drag them to the MDX Expression pane.
- The targeted element is the default parent. To change the parent, click Set Parent next to the hierarchical element you want to assign as the parent.
- If you need to delete the expression and begin again, click Clear.
- Click Save.
- Open the dossier you want to modify.
- Right-click an element in the grid and select Calculated Member. The Calculated Member dialog opens. The parent element appears in Parent.
- In Name, enter a name for the calculated member.
- In the MDX Expression, enter arguments for the Apply Simple function. This function allows you to enter an MDX expression, within the quotes, to create a calculated member. You can type arithmetic operators (such as + and -) and values directly in the expression.
- You can add hierarchical elements from the left pane to the MDX expression. Expand the hierarchies in the left pane to locate the hierarchical elements you want to add. Then, double-click or drag them to the MDX Expression pane.
- The targeted element is the default parent. To change the parent, click Set Parent next to the hierarchical element you want to assign as the parent.
- If you need to delete the expression and begin again, click Clear.
- Click Save.
Create a calculated member for the previous year.
ApplySimple("ParallelPeriod([Date].[Calendar].[Calendar Year], 1, [Date].[Calendar].[Calendar Year].[CY 2018])")
Creating Derived Metrics in Hierarchy Reports Using MDX Expressions
You can create derived metrics in hierarchy reports using MDX expressions.
You can create derived metrics in hierarchy reports using MDX expressions.
To Create Derived Metrics Using MDX Expressions
- Open the dossier you want to modify.
-
Create a derived metric and reserve it for future use in a visualization. In the Datasets panel, click More to the right of the dataset in which you are creating a derived metric and choose Create Metric.
- Enter a name for the metric in the Metric Name field.
- Enter the derived metric definition in the right pane using the ApplySimple function. This function allows you to enter an MDX expression to create a derived metric. You can type arithmetic operators (such as + and -) and values directly in the metric expression.
The Apply Simple function does not appear as a selection in the Functions pane. You must enter it manually. In addition, you must add a dummy metric to the end of the function as shown in the example below. This function is not used in the definition. However, it is necessary since all metrics require two arguments for validation.
Create a derived metric for the gross profit margin.
ApplySimple("[Measures].[Gross Profit] / [Measures].[Sales Amount]", [Sales Amount])
Use Objects panes to assist in the creation your derived metric definition. Locate the objects you want to add by using the Search field at the top of the pane. Then, double-click objects to add them to the Formula pane.
- If you need to delete the metric formula and begin again, click Clear.
- Click Validate to check if the metric expression is valid.
- Click Save.
- Open the dossier you want to modify.
- Create a derived metric and reserve it for future use in a visualization. In the Datasets panel, click More to the right of the dataset in which you are creating a derived metric and choose Create Metric.
- Enter a name for the metric in the Metric Name field.
- Enter the derived metric definition in the right pane using the ApplySimple function. This function allows you to enter an MDX expression to create a derived metric. You can type arithmetic operators (such as + and -) and values directly in the metric expression.
The Apply Simple function does not appear as a selection in the Functions pane. You must enter it manually. In addition, you must add a dummy metric to the end of the function as shown in the example below. This function is not used in the definition. However, it is necessary since all metrics require two arguments for validation.
Create a derived metric for the gross profit margin.
ApplySimple("[Measures].[Gross Profit] / [Measures].[Sales Amount]", [Sales Amount])
Use Objects panes to assist in the creation your derived metric definition. Locate the objects you want to add by using the Search field at the top of the pane. Then, double-click objects to add them to the Formula pane.
- If you need to delete the metric formula and begin again, click Clear.
- Click Validate to check if the metric expression is valid.
- Click Save.
Nice Article.
ReplyDeleteMsbi Online Training India | MSBI Certification Training
Thanks for this useful blog, keep sharing your thoughts...
ReplyDeleteUnix Program
Unix Applications
It 's an amazing and awesome blog. Thanks for sharing
ReplyDeleteMicrostrategy Online Course
Microstrategy Certification
ReplyDeleteNice and good article. It is very useful for me to learn and understand easily. Thanks for sharing
Microstrategy Online Course
Microstrategy Certification
I really liked your blog post.Much thanks again. Awesome.
ReplyDeleteMicrostrategy Online Course
Microstrategy Certification
An awesome blog for the freshers. Thanks for posting this information.
ReplyDeleteMicrostrategy Training
Microstrategy Online Training