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

    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 perform transf

    Transaction Services - Configure Transactions

    Configure Transactions in MSTR Web Transaction Services-enabled document displayed on an iPhone, iPad, or Android device can allow users to insert/update/delete data in to the database, using the options in the Configure Transactions Editor. To do so, you must link a Transaction Services report to a grid or to text fields in a panel stack. If the document is being displayed on an iOS device, you can link the report to the cells of a transaction table. Data from the input objects defined in the Transaction Services report is displayed in the grid, text fields, or cells for users to edit. Prerequisites:        Ø   You must have the Web Configure Transaction privilege assigned by MSTR user admin. Ø   Create the Transaction Services report (usually a grid report) you want to link to the grid, text fields, or transaction table cells. Make sure that the Transaction Services report must contain the input object for each value you want to allow users to change.  Ø   Ma
    Microstrategy Release Types Platform release Interval:  Annually every twelve (12) months in December Who:  Entire customer base What:  Focus on production level security, stability, and performance defect fixes for all customers. Expectation:  Customer has chosen platform path and wants product stability without new enhancements. Support:  Three (3) years, patches for approved P1 defects, and regular hotfix cadence addresses critical defects. Feature Release Interval:  Quarterly every three (3) months Who:  Customers with specific feature requirements. What:  New functionality developed in close collaboration with customers and customer council. Expectation:  Customer has chosen feature path, will consume further feature releases. Support:  Six (6) months patch support for approved P1 defects and (eighteen) 18 months troubleshooting. Customers upgrade to next feature release for roll-up fixes. Why has MicroStrategy introduced “Platform” and “Feature

    Sending an email in MSTR where the results of a report are in the email body as HTML content and a different report/document is an attachment to the same email in MicroStrategy

    Is it possible to send an email using Distribution Services where the results of a report are in the email body as HTML content and a different report/document in MSTR? ANSWER: It is currently not possible to send an email using Distribution Services where the results of a report are in the email body as HTML content and a different report/document is an attachment to the same email in MicroStrategy 9.x. An enhancement request has been logged for this feature. ACTION: Contact Microstrategy Technical Support for an update on the enhancement, I have contacted but nobody knows where the request is  

    Update the data on an Intelligent Cube without having to republish the entire cube in MicroStrategy

    Update the data on an Intelligent Cube without having to republish the entire cube in MicroStrategy MicroStrategy has introduced a feature known as, Incremental Refresh Options, which allow Intelligent Cubes to be updated based on one or more attributes, by setting up incremental refresh settings to update the Intelligent Cube with only new data. This can reduce the time and system resources necessary to update the Intelligent Cube periodically versus a full republish. For example, if a user has an Intelligent Cube that contains weekly sales data, the user may want this Intelligent Cube to be updated at the end of every week with the sales data for that week. By setting up incremental refresh settings, he can make it so that only data for one week is added to the Intelligent Cube, without affecting the existing data and without having to reload all existing data. Users can select two types of objects for the incremental fetch: a report or

    Control the display of null and zero metric values

    Show   Control the display of null and zero metric values in a grid report You can determine how to display or hide rows and columns in a grid report that consist only of null or zero metric values. You can have MicroStrategy hide the rows and columns in the following ways: Hide rows and columns that consist only of null metric values Hide rows and columns that consist only of zero metric values Hide rows and columns that consist only of null or zero metric values (default) Once you have defined how MicroStrategy hides null and zero metric values in the grid, you can quickly show or hide the grid using the Hide Nulls/Zeros option in the Data menu, as described below, or by clicking the  Hide Nulls/Zeros  icon  in the Data toolbar. To determine how null and zero metric values are displayed or hidden in a grid report Open the report in Edit mode. From the  Tools  menu, select  Report Options . The Report Options dialog box opens. To determine how

    Multi-Table Data Import(MTDI) from one or more supported data sources

    Multi-Table Data Import(MTDI) from one or more supported data sources In MicroStrategy Analytics Enterprise Web 10 onewards, users can now simultaneously import two or more tables from one or more supported data sources, this feature is called Multi-Table Data Import (MTDI) which has been renamed as Super Cubes in MSTR 2019 (Does it sound like multisourcing for all the users without admin help?) Currently, all connectors in MicroStrategy Web 10 except " OLAP " and " Search Engine Indices " support Multi-Table Data Import. Users are able to add multiple tables/files when doing data import from single connector, as shown below: Users are also able to combine multiple tables/files from different sources and store them into one single Intelligent Cube, as shown below:

    Stop a Report Services Document subscription from sending if no data is returned in MicroStrategy Web

    Trick to Stop a Report Services Document subscription from sending if no data is returned in MicroStrategy Web The following steps are for stopping a Report Services Document subscription from sending if no data is returned: In MicroStrategy Web, edit or execute a report. Right-click on the metric header to apply the condition or threshold and select " Alerts ". Specify the condition " Is Not Null " to the metric for the delivery to be triggered in the filter editor as shown below. Expand the "Delivery Settings" section. Specify the desired delivery options including recipient address, subscription name, delivery format, compression options and the schedule to run the report and check the condition.  The subscription will be sent on the defined schedule only when data is returned in the Report Services Document.

    Personalizing file locations, email and file subscriptions using macros in Microstrategy

    Personalizing file locations MSTr allows to dynamically specify the  File Location  and  Backup File Location  in a file device using macros.  For example, if you specify the  File Location  as  C:\Reports\{&RecipientName}\ ,  all subscriptions using that file device are delivered to subfolders of  C:\Reports\ . Subscribed reports or documents for each recipient are delivered to a subfolder with that recipient’s name, such as  C:\Reports\Jane Smith\  or  C:\Reports\Hiro Protagonist\ . The table below lists the macros that can be used in the  File Location  and  Backup File Location  fields in a file device: Description Macro Date on which the subscription is sent {&Date} Time at which the subscription is sent {&Time} Name of the recipient {&RecipientName} User ID (32-character GUID) of the recipient {&RecipientID} Distribution Services address that the subscription is delivered to {&AddressName} File path that a

    MicroStrategy default sort order for an attribute elements browsing

    MicroStrategy default sort order for an attribute elements browsing and display How does MicroStrategy 9.x resolve the default sort order for an attribute when different sort orders are defined for different forms? Consider the following cases: CASE 1 A new attribute is created with three forms, all with sort order set to none. Form Name Form Type Default Sort Order ID ID None DESC DESC None LongDesc None None The overall sort order is evaluated and stored in the attribute definition when the attribute is saved. With all form sort orders set to none there is no saved sort order, MicroStrategy defaults to sort ascending by ID. CASE 2 The same attribute is modified so the forms are now: Form Name Form Type Default Sort Order ID ID None DESC DESC Descending LongDesc None Ascending Now when the attribute is saved, MicroStrategy goes through each form in the order they appear in the main 'Forms' window of the attribute editor. The first