Skip to main content

Apply or Pass-through functions in Microstrategy

Apply (Pass-Through) functions

MSTR Apply functions provide access to functions or syntactic constructs that are not standard in MicroStrategy but are provided by various RDBMS systems..

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.
The “#n code in Apply function syntax serves as placeholders for the MicroStrategy objects being passed to your database.
The index for referencing these objects begins with 0 and increases by
 for each successive object passed. For example, ApplySimple("#0 * #1",[col1],[col2])indicates that two items, col1 and col2, referenced as #0 and #1, respectively, are being passed to your database to be multiplied together (by the database). If the number of references in an Apply function (e.g., #0, #1, and so forth) exceeds the number of objects passed in that function, MicroStrategy passes the last available object in place of the extra reference(s). For example, ApplySimple("#0 * #1 * #2 * #3",[col1],[col2]) uses two more references than there are arguments to pass, so MicroStrategy passes #2 and #3, the extra references, as col2, the last available object in the list.
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.

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

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)

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 accepts facts, attributes, and metrics as input.

Examples of object creation
Expression typeExamples
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.

Example 6: Applysimple in a filter

Applysimple in a filter data for this year and last year when the year attribute is available.

  1. Right click in the filters folder or any where in MSTR Developer and select Filter.
  2. Select Empty Filter in the New Filter dialogue box.
  3. Now drag the Year attribute into the filter Editor.
  4. Select ID in the qualify on dropdown
  5. Select Between in the Operator dropdown.
  6. Now you will have two text boxes with Value selected in the corresponding dropdown as shown below:


  1. Now change the dropdowns from Value to Custom
  2. Enter similar to the below validated applysimple definition in the first custom entry:        ApplySimple("(select max(YEAR)-1 from LKUP_ENTRY_DATE_TABLE)",0)
  3. Enter similar to the below validated applysimple definition in the second custom entry: ApplySimple("(select max(YEAR) from LKUP_SD_ENTRY_DATE_TABLE)",0)
  4. Click on OK.
  5. 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.
    Example
    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]) {~} 

    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()
    Example 1
    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 ORApplyLogic is a logical function.

    Syntax

    ApplyLogic()
    Accepts logic (Boolean) values as input.
    Example
    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

    ApplyOLAP()
    Accepts only metrics as input.
    Example
    ApplyOLAP(“RunningSlope(#0,#1)”, [Metric 1], [Metric 2])

    Applysimple in Dossier

    ApplySimple in Dossier

    Creating Calculated Members in Hierarchy Reports Using MDX Expressions

    To Create Calculated Members Using MDX Expressions

    1. Open the dossier you want to modify.
    2. Right-click an element in the grid and select Calculated Member. The Calculated Member dialog opens. The parent element appears in Parent.
    3. In Name, enter a name for the calculated member.
    4. 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.
    5. Create a calculated member for the previous year.
      ApplySimple("ParallelPeriod([Date].[Calendar].[Calendar Year], 1, [Date].[Calendar].[Calendar Year].[CY 2018])")
    6. 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.
    7. 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.
    8. If you need to delete the expression and begin again, click Clear.
    9. Click Save.

    Creating 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

    1. Open the dossier you want to modify.
    2. 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.
    3. Enter a name for the metric in the Metric Name field.
    4. 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.
    5. 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.
    1. If you need to delete the metric formula and begin again, click Clear.
    2. Click Validate to check if the metric expression is valid.
    3. Click Save.

    Comments

    Post a Comment

    Popular posts from this blog

    Microstrategy Custom number formatting symbols

    Custom number formatting symbols If none of the built-in number formats meet your needs, you can create your own custom format in the Number tab of the Format Cells dialog box. Select  Custom  as the Category and create the format using the number format symbols listed in the table below. Each custom format can have up to four optional sections, one each for: Positive numbers Negative numbers Zeros Text Each section is optional. Separate the sections by semicolons, as shown in the example below: #,###;(#,###);0;"Error: Entry must be numeric" For more examples, see  Custom number formatting examples . To jump to a section of the formatting symbol table, click one of the following: Numeric symbols Character/text symbols Date and time symbols Text color symbols Currency symbols Conditional symbols Numeric symbols For details on how numeric symbols apply to the Big Decimal data type, refer to the  Project Design Guide . ...

    Case functions Microstrategy

    Ca se functions Microstrategy Case functions return specified data in a SQL query based on the evaluation of user-defined conditions. In general, a user specifies a list of conditions and corresponding return values. Case This function evaluates multiple expressions until a condition is determined to be true, then returns a corresponding value. If all conditions are false, a default value is returned.  Case  can be used for categorizing data based on multiple conditions. This is a single-value function. Syntax Case ( Condition1 ,  ReturnValue1 ,  Condition2 , ReturnValue2 ,...,  DefaultValue ) Example Case(([Total Revenue] < 300000), 0, ([Total Revenue] < 600000), 1, 2) sum(Case (Day@DESC in (“Sat”,”Sun”), Sales, 0) {~+} Sum(Case(Category@DESC In("Books","Electronics"),Revenue,0)){~+} CaseV (case vector) CaseV  evaluates a single metric and returns different values according to the results. It can be used to perfo...

    MicroStrategy URL API Parameters

    MicroStrategy URL Structure The following table summarizes the root URL structure used for every request to MicroStrategy Web. Environment Main Application URL Administration URL J2EE http://webserver/MicroStrategy/servlet/mstrWeb http://webserver/MicroStrategy/servlet/mstrWebAdmin .NET http://webserver/MicroStrategy/asp/Main.aspx http://webserver/MicroStrategy/asp/Admin.aspx Every request sent to MicroStrategy Web calls a central controller. Parameters are appended to  Main.aspx  or  mstrWeb  (in a .NET and J2EE environment, respectively) to indicate to the controller how the request should be internally forwarded and handled. The following examples show a URL for accessing a MicroStrategy folder when the user does not have an existing session. The URL contains not only the parameters needed to connect to MicroStrategy Web, but also the parameters needed to log on and create a session. J2EE environment: <a href="http:...

    Microstrategy "Error type: Odbc error. Odbc operation attempted

     "Error type: Odbc error. Odbc operation attempted: SQLExecDirect. [HYT00:0: on SQLHANDLE] [MicroStrategy][ODBC Oracle Wire Protocol driver]Timeout expired" is shown when executing reports from Web When users are trying to execute some reports in MicroStrategy web in particular, they may receive the Error “SQL Generation Complete Index out of range” and “Timeout expired” error as shown below: Possible Causes: One possible cause is that the MicroStrategy Intelligence Server using a cached database connection that was already dropped by the RDBMS. To resolve this: Admin should delete the database connection caches and create a new DSNs in case they are sharing DSNs to connect to different databases. In addition, change the settings for the ‘Connection lifetime’ and the ‘Connection idle time out’.  Follow the steps below to perform the mentioned changes and verify the report after each step and some of the settings require i-server r...

    RunningSum calculation only on the metric subtotal in MicroStrategy

    RunningSum calculation only on the metric subtotal in MicroStrategy Here are the series of steps to setup report objects in which metrics and subtotals so only the  subtotal field  will contain the  RunningSum  and the  regular metric values  will be  standard sum values . 1) Create Metric 1 which is the sum of the fact that is to be in the columns. 2) Create Metric2 as the RunningSum of Metric1.  NOTE:  The  sortby  parameter for the RunningSum should be set to whichever attribute you want the report sorted by. 3) Create Metric3 as Metric1 + (Metric2 x 0) 4) Create a new subtotal called "Max" which is defined as Max() 5) On the Subtotals/Aggregation tab for Metric 3, set the Total subtotal function to be "Max" and select the check box for "Allow Smart Metric" 6) Create the desired report and place the 3 metrics on the report.  NOTE:  Only Metric3 is required on the gri...

    Export a Report Services document to Excel with formatting using URL API

    Export a Report Services document to Excel with formatting using URL API in MSTR Web In order to export a document in excel format using the URL API, the executionMode must be set to 4.  If excutionMode is not provided in the URL, by default PDF will be used as executionMode.   Below are the list of parameters that the URL must contain in order to execute correctly.   evt= 3069 src= Main.aspx.3069 executionMode= 4 documentID= 7E1644CA424F482DA811569FCE8127FF( Replace the document Id with your document ID)   Sample URL for .NET environment: http://WebServerName/MicroStrategy/asp/Main.aspx?evt=3069&src=Main.aspx. 3069 &executionMode= 4 &documentID= 7E1644CA424F482DA811569FCE8127FF    

    Microstrategy Caches explained

    Microstrategy Caches Improving Response Time: Caching A  cache is a result set that is stored on a system to improve response time in future requests.  With caching, users can retrieve results from Intelligence Server rather than re-executing queries against a database. To delete all object caches for a project 1 In Developer, log into a project. You must log in with a user account that has administrative privileges. 2 From the  Administration  menu, point to  Projects , and then select  Project Configuration . The Project Configuration Editor opens. 3 Expand  Caching , expand  Auxiliary Caches , then select  Objects . To delete all configuration object caches for a server 1 Log in to the project source. 2 From the  Administration  menu in Developer, point to  Server , and then select  Purge Server Object Caches . 4 Click  Purge Now . To purge web cache follow the steps in the link ...

    Microstrategy Document Autotext macros:

    Autotext  code/macros in  Microstrategy Document/dashboard This is a list of the available auto text macros that the Report Services Document engine recognizes. The following auto text codes allow you to add  document variable information to your document. These auto text codes are automatically replaced by information about the document. Auto text codes for MSTR document/dashboard:  AUTOTEXT DESCRIPTION   {&PAGE}  Display the current page.  {&NPAGES}  Display the total number of pages.  {&DATETIME}  Display the current date and time.  {&USER}  Display the user name that is executing the Report Services Document.  {&DOCUMENT}  Display the document name.  {&DOCUMENTID}  Display the document ID.  {&DESCRIPTION}  Display the document description.  {&PROJECT}  Display the project name.  {&EXECUTIONTIME}  Dis...

    Metric values are repeated across rows when a report is executed in MicroStrategy

    Metric values are repeated across rows when a report is executed in MicroStrategy When comparing report results between DB Query Tool and MicroStrategy, some reports show repeated metric values in MicroStrategy where there were none in DB Query Tool. To illustrate the issue, a fact table CAT_ITEM_SLS has been added into the MicroStrategy Tutorial project and populated with a small set of three rows. CAT_ID ITEM_ID REVENUE  1 1  10   1 2  20  2  2  30  Report results in DB Query Tool: Report results in MicroStrategy: In MicroStrategy, the row for "Art As Experience" in the Spring 2007 catalog repeats the $20 value from the Winter 2007 catalog, where DB Query Tool shows the $30 value from the fact table. CAUSE The discrepancy occurs because the attribute elements for Catalog and Item are in a many-to-many relationship, but the attribute relationship in the MicroStrategy schema is defined incorrectly w...