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 OR. ApplyLogic 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 . ...

    HTML image as a button that exports a grid on a document to Excel in MicroStrategy

    HTML Image as a Button That Exports a Grid on a Document to Excel in MicroStrategy In MicroStrategy Web, it is possible to use an image as a button to export a grid on a document to Excel in MicroStrategy version 10.4 and later. This document provides the steps to accomplish the same.  The goal is to create an image link that is used to export the grid, like shown below: Document in Edit Mode Follow the steps below: 1. Create a Report Services Document 2. Make two grids with different attributes and metrics in each  3. Insert an HTML   container   (and not an image) and insert the script below. Make sure the Project name matches the given project and gridKey matches ( highlighted in bold in the script below). The code below is used for the first grid and button. Main things to watch are the  gridKey  values and the name of the element id which in the below code is  exportLink .   <a target="_blank" id="exportLink" href=""...

    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 Dossiers explained

    Microstrategy  Dossiers With the release of MicroStrategy 10.9, we’ve taken a leap forward in our dashboarding capabilities by simplifying the user experience, adding storytelling, and collaboration.MSTR has  evolved dashboards to the point that they are more than dashboards - they are  interactive, collaborative analytic stories . Ultimately, it was time to go beyond dashboards, both in concept and in name, and so  the've  renamed VI dashboards to  ‘ dossiers ’.  Dossiers can be created by using the new Desktop product or Workstation or simply from the Web interface which replaces Visual Insights. All the existing visual Insights dashboards will be converted to Dossiers   With MicroStrategy 10.9, there was an active focus on making it easier to build dashboards for the widest audience of end users. To achieve this, some key new capabilities were added that make it easier to author, read, interact and collaborate on dashboards ...

    Level metrics in Microstartegy/MSTR

    Level Metrics Level metrics allows the users to choose the right combination of level target, filtering, and grouping (referred to as elements) to achieve your desired results.  The elements of a metric level are described below: • Target : The target is the attribute level at which the metric calculation groups. For a more detailed description, see  Target: The context of a calculation . • Grouping : Grouping determines how the metric aggregates. For a more detailed description, see  Grouping: How aggregation is performed . • Filtering : Filtering governs how the report filter interacts with the metric calculation. For a more detailed description, see  Filtering: Interaction with report filters . The level is indicated between the curly braces ({ }) in the metric definition shown below: Sum(Revenue) {~, Product} The tilde (~) represents the report level with standard filtering, denoted by the plus sign (+). If you add item as a level, th...

    MicroStrategy Connection File

    Creating a Connection File in Microstrategy Workstation A MicroStrategy connection file (also know as the .mstrc) is a text file that contains all of the information needed to connect Workstation to a MicroStrategy environment.  With a .mstrc file, users can simply import the file and enter their credentials, and then they will be connected to a MicroStrategy On-Premises Environment. Requisites   MicroStrategy Workstation URL for your Environment MicroStrategy Login credentials How to create the connection file With the integrated option  Connect to New Environment: Open Workstation window. Go to  Environments  located under  Manage  on the left side.   Click on the plus symbol with the label of  Connect to a New Environment .   Assign a friendly environment name. Provide the Environment URL and click  Continue . Note: If it is a default MicroStrategy installation of MicroStrategy Library, the Environment U...

    MicroStrategy Hadoop Gateway operation modes

    MicroStrategy Hadoop Gateway operation modes MicroStrategy Hadoop Gateway is a native connector which was built based on Spark 1.6.x. You can choose one or more data files from Hadoop HDFS and load them into MicroStrategy Intelligence Server. Data files can be published as either an In-Memory Cube or a Live Connect Cube. MicroStrategy Hadoop Gateway supports three operation modes : YARN client Standalone (HDP cluster does not support Standalone) Local YARN client mode: The driver runs in the client process, and the application master is only used for requesting resources from YARN. Running in this mode requires YARN service to be enabled on your Hadoop cluster. Standalone mode:  MicroStrategy Hadoop Gateway uses Spark Master to coordinate data processing. Local mode:  no application is deployed in the Spark nodes. All data processing is executed in the MicroStrategy Hadoop Gateway host. This modality is intended for testing and troubleshooting.

    Use a Visualization to Filter the Data in Another Visualization in a Dossier

    Use a Visualization to Filter the Data in Another Visualization Once you add visualizations to a dossier, you can use one visualization to filter or highlight data in another visualization. Define one visualization as the source. Then, select the other visualizations you want to filter or highlight as targets. The target visualizations only display or highlight data that also appears in the source. Your target visualization can be in any chapter or page within your dossier. Open a dossier with two or more visualizations. To enable a visualization to filter or highlight the data in another visualization Open the dossier  you want to modify. Hover over the visualization to use as the source and click  More   in the top right and choose  Select Target . A   icon appears in the upper left corner of the source visualization. The name of the source visualization appears after  Use visualization  at the top of the screen. If the source visualization...

    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 add...

    Execute Integrity manager test from Command line

    Execute Integrity manager test from Command line  MSTR Integrity Manager allows the user to execute a test without having to load the GUI, or to schedule a test to run later at specific times or dates. Go over using Windows AT command at: https://support.microsoft.com/en-us/help/313565/how-to-use-the-at-command-to-schedule-tasks https://www.lifewire.com/at-command-2618090 Here are the prerequisites to execute a test from the command line: Create a test and saved using the Integrity Manager graphical interface. Make sure that the users has the ' Use Integrity Manager ' privilege for that project(provided by the administrator) and the ' Execute ' permission for the reports to be tested. Keep in mind that MicroStrategy Integrity Manager can only test three-tier projects, i.e., projects which are connected to a MicroStrategy i- Server. Projects in Direct Connection (two-tier) mode cannot be tested with this tool...