You are on page 1of 741

Functions Reference

Version: 10.7
10.7, April 2017
Copyright 2017 by MicroStrategy Incorporated. All rights reserved.
If you have not executed a written or electronic agreement with MicroStrategy or any authorized MicroStrategy distributor (any such agreement, a
"Separate Agreement"), the following terms apply:
This software and documentation are the proprietary and confidential information of MicroStrategy Incorporated and may not be provided to any other person. Copyright
2001-2017 by MicroStrategy Incorporated. All rights reserved.
THIS SOFTWARE AND DOCUMENTATION ARE PROVIDED AS IS AND WITHOUT EXPRESS OR LIMITED WARRANTY OF ANY KIND BY EITHER MICROSTRATEGY
INCORPORATED OR ANYONE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION, OR DISTRIBUTION OF THE SOFTWARE OR DOCUMENTATION,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE AND
NONINFRINGMENT, QUALITY OR ACCURACY. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE AND DOCUMENTATION IS WITH
YOU. SHOULD THE SOFTWARE OR DOCUMENTATION PROVE DEFECTIVE, YOU (AND NOT MICROSTRATEGY, INC. OR ANYONE ELSE WHO HAS BEEN INVOLVED
WITH THE CREATION, PRODUCTION, OR DISTRIBUTION OF THE SOFTWARE OR DOCUMENTATION) ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING,
REPAIR, OR CORRECTION. SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU.
In no event will MicroStrategy, Incorporated. or any other person involved with the creation, production, or distribution of the Software be liable to you on account of any claim
for damage, including any lost profits, lost savings, or other special, incidental, consequential, or exemplary damages, including but not limited to any damages assessed against
or paid by you to any third party, arising from the use, inability to use, quality, or performance of such Software and Documentation, even if MicroStrategy, Inc. or any such
other person or entity has been advised of the possibility of such damages, or for the claim by any other party. In addition, MicroStrategy, Inc. or any other person involved in
the creation, production, or distribution of the Software shall not be liable for any claim by you or any other party for damages arising from the use, inability to use, quality, or
performance of such Software and Documentation, based upon principles of contract warranty, negligence, strict liability for the negligence of indemnity or contribution, the
failure of any remedy to achieve its essential purpose, or otherwise. The entire liability of MicroStrategy, Inc. and your exclusive remedy, shall not exceed, at the option of
MicroStrategy, Inc., either a full refund of the price paid, or replacement of the Software. No oral or written information given out expands the liability of MicroStrategy, Inc.
beyond that specified in the above limitation of liability. Some states do not allow the limitation or exclusion of liability for incidental or consequential damages, so the above
limitation may not apply to you.
The information contained in this manual (the Documentation) and the Software are copyrighted and all rights are reserved by MicroStrategy, Inc. MicroStrategy, Inc. reserves
the right to make periodic modifications to the Software or the Documentation without obligation to notify any person or entity of such revision. Copying, duplicating, selling, or
otherwise distributing any part of the Software or Documentation without prior written consent of an authorized representative of MicroStrategy, Inc. are prohibited. U.S.
Government Restricted Rights. It is acknowledged that the Software and Documentation were developed at private expense, that no part is public domain, and that the
Software and Documentation are Commercial Computer Software provided with RESTRICTED RIGHTS under Federal Acquisition Regulations and agency supplements to
them. Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer
Software clause at DFAR 252.227-7013 et. seq. or subparagraphs (c)(1) and (2) of the Commercial Computer Software-Restricted Rights at FAR 52.227-19, as applicable.
Contractor is MicroStrategy, Incorporated., 1850 Towers Crescent Plaza, Tysons Corner, VA 22182. Rights are reserved under copyright laws of the United States with respect to
unpublished portions of the Software.
The following terms and notices apply regardless of whether you have executed a Separate Agreement:
Trademark Information
The following are either trademarks or registered trademarks of MicroStrategy Incorporated or its affiliates in the United States and certain other countries:
MicroStrategy, MicroStrategy 10, MicroStrategy 10 Secure Enterprise, MicroStrategy 9, MicroStrategy 9s, MicroStrategy Analytics, MicroStrategy Analytics Platform, MicroStrategy
Desktop, MicroStrategy Operations Manager, MicroStrategy Analytics Enterprise, MicroStrategy Evaluation Edition, MicroStrategy Secure Enterprise, MicroStrategy Web,
MicroStrategy Mobile, MicroStrategy Server, MicroStrategy Parallel Relational In-Memory Engine (MicroStrategy PRIME), MicroStrategy MultiSource, MicroStrategy OLAP
Services, MicroStrategy Intelligence Server, MicroStrategy Intelligence Server Universal, MicroStrategy Distribution Services, MicroStrategy Report Services, MicroStrategy
Transaction Services, MicroStrategy Visual Insight, MicroStrategy Web Reporter, MicroStrategy Web Analyst, MicroStrategy Office, MicroStrategy Data Mining Services,
MicroStrategy Narrowcast Server, MicroStrategy Health Center, MicroStrategy Analyst, MicroStrategy Developer, MicroStrategy Web Professional, MicroStrategy Architect,
MicroStrategy SDK, MicroStrategy Command Manager, MicroStrategy Enterprise Manager, MicroStrategy Object Manager, MicroStrategy Integrity Manager, MicroStrategy
System Manager, MicroStrategy Analytics App, MicroStrategy Mobile App, MicroStrategy Tech Support App, MicroStrategy Mobile App Platform, MicroStrategy Cloud,
MicroStrategy R Integration, Dossier, Usher, MicroStrategy Usher, Usher Badge, Usher Security, Usher Security Server, Usher Mobile, Usher Analytics, Usher Network Manager,
Usher Professional, MicroStrategy Services, MicroStrategy Professional Services, MicroStrategy Consulting, MicroStrategy Customer Services, MicroStrategy Education,
MicroStrategy University, MicroStrategy Managed Services, BI QuickStrike, Mobile QuickStrike, Transaction Services QuickStrike Perennial Education Pass, MicroStrategy Web
Based Training (WBT), MicroStrategy World, Best in Business Intelligence, Pixel Perfect, Global Delivery Center, Direct Connect, Enterprise Grade Security For Every Business,
Build Your Own Business Apps, Code-Free, Welcome to Ideal, The Worlds Most Comprehensive Analytics Platform, The Worlds Most Comprehensive Analytics Platform.
Period.
Other product and company names mentioned herein may be the trademarks of their respective owners.
Specifications subject to change without notice. MicroStrategy is not responsible for errors or omissions. MicroStrategy makes no warranties or commitments concerning the
availability of future products or versions that may be planned or under development.
Patent Information
This product is patented. One or more of the following patents may apply to the product sold herein: U.S. Patent Nos. 6,154,766, 6,173,310, 6,260,050, 6,263,051, 6,269,393,
6,279,033, 6,567,796, 6,587,547, 6,606,596, 6,658,093, 6,658,432, 6,662,195, 6,671,715, 6,691,100, 6,694,316, 6,697,808, 6,704,723, 6,741,980, 6,765,997, 6,768,788,
6,772,137, 6,788,768, 6,798,867, 6,801,910, 6,820,073, 6,829,334, 6,836,537, 6,850,603, 6,859,798, 6,873,693, 6,885,734, 6,940,953, 6,964,012, 6,977,992, 6,996,568,
6,996,569, 7,003,512, 7,010,518, 7,016,480, 7,020,251, 7,039,165, 7,082,422, 7,113,474, 7,113,993, 7,127,403, 7,174,349, 7,181,417, 7,194,457, 7,197,461, 7,228,303, 7,260,577,
7,266,181, 7,272,212, 7,302,639, 7,324,942, 7,330,847, 7,340,040, 7,356,758, 7,356,840, 7,415,438, 7,428,302, 7,430,562, 7,440,898, 7,486,780, 7,509,671, 7,516,181, 7,559,048,
7,574,376, 7,617,201, 7,725,811, 7,801,967, 7,836,178, 7,861,161, 7,861,253, 7,881,443, 7,925,616, 7,945,584, 7,970,782, 8,005,870, 8,035,382, 8,051,168, 8,051,369, 8,094,788,
8,130,918, 8,296,287, 8,321,411, 8,452,755, 8,521,733, 8,522,192, 8,577,902, 8,606,813, 8,607,138, 8,645,313, 8,761,659, 8,775,807, 8,782,083, 8,812,490, 8,832,588, 8,943,044,
8,943,187. 8,958,537, 8,966,597, 8,983,440, 8,984,274, 8,984,288, 8,995,628, 9,027,099, 9,027,105, 9,037, 577, 9,038,152, 9,076,006, 9,086,837, 9,116,954, 9,124,630,
9,154,303, 9,154,486, 9,160,727, 9,166,986, 9,171,073, 9,172,699, 9,173,101, 9,183, 317, 9,195,814, 9,208,213, 9,208,444, 9,262,481, 9,264,415, 9,264,480, 9,269,358, 9,275,127,
9,292,571, 9,300,646, 9,311,683 9,313,206, 9,330,174, 9,338,157, 9,361,392, 9,378,386, 9,386,416, 9,391,782, 9,397,838, 9,397,980, 9,405,804, 9,413,710, 9,413,794, 9,430,629,
9,432,808, 9,438,597, 9,444,805, 9,450,942, 9,450,958, 9,454,594, 9,507,755, 9,513,770, 9,516,018, 9,529,850, 9,563,761, and 9,565,175. Other patent applications are
pending.
Third Party Software
Various MicroStrategy products contain the copyrighted technology or software of third parties ("Third Party Software"). Your use of MicroStrategy products is subject to all
applicable terms and conditions associated with any such Third Party Software
Datalogics, Inc.
Copyright 2000-2017 Datalogics, Inc.
Copyright 1984-2017 Adobe Systems Incorporated and its licensors. All rights reserved
Adobe, Adobe PDF Library, and The Adobe Logo are trademarks of Adobe Systems Incorporated.
CONTENTS
Overview and Additional Resources 5
Function categories 6
Function descriptions 6
How to find business scenarios and examples 7
Whats new in this guide 7
Prerequisites 9
Who should use this guide 9
Resources 9
Feedback 17
1. Understanding Functions in MicroStrategy 19
The basics of MicroStrategy objects, object definitions, and functions 19
Function syntax and formula components 21
Using functions in expressions 39
How MicroStrategy processes functions 57
Additional examples of functions in expressions 72
2. Standard Functions 93
Basic functions 94
Date and time functions 119
Internal functions 133
NULL/Zero functions 148
OLAP functions 150
Rank and NTile functions 205
String functions 223

2017, MicroStrategy Inc. 3


Functions Reference

3. Operators 241
Arithmetic operators 241
Comparison operators 243
Comparison for rank operators 251
Logical operators 255
4. Plug-In Package Functions 258
Data mining functions 259
Financial functions 261
Mathematical functions 317
Statistical functions 334
A. MicroStrategy and Database Support for Functions 375
Analytical Engine support for functions 375
Databases that a function can be evaluated on 379
Glossary 690
Index 728

4 2017, MicroStrategy Inc.


OVERVIEW AND ADDITIONAL
RESOURCES
Functions in MicroStrategy are powerful tools used in expressions to define
MicroStrategy objects and initiate complex user-selected calculations. Wherever you can
define an expression, you can use a function. From creating basic objects to building
complex reports and analyzing data, you have the ability to create custom expressions
using a large library of functions supported by MicroStrategy. Although functions are
most commonly used in metric expressions, they are also used to create filters, define
attribute forms, and so on.
This guide provides the following information:
Details of function syntax and the components of a function formula
Explanation of where functions can be used in expressions
Steps to access functions from MicroStrategy Developer
Overview of the MicroStrategy engine and how Intelligence Server uses functions
Examples of functions used in complex business scenarios
Details of function support in certified databases

This guide does not include information on Data Mining functions. This
information can be found in the Data Mining Services chapter of the Advanced
Reporting Guide.

These details are described in the following chapters:


Chapter 1, Understanding Functions in MicroStrategy
Chapter 2, Standard Functions
Chapter 3, Operators
Chapter 4, Plug-In Package Functions
Appendix A, MicroStrategy and Database Support for Functions

2017, MicroStrategy Inc. 5


Functions Reference

Function categories
For the purposes of this guide, functions are organized into the following categories:
Chapter 2, Standard Functions
Basic functions, page 94
Date and time functions, page 119
Internal functions, page 133
NULL/Zero functions, page 148
OLAP functions, page 150
Rank and NTile functions, page 205
String functions, page 223
Chapter 3, Operators
Arithmetic operators, page 241
Comparison operators, page 243
Comparison for rank operators, page 251
Logical operators, page 255
Chapter 4, Plug-In Package Functions
Data mining functions, page 259
Financial functions, page 261
Mathematical functions, page 317
Statistical functions, page 334

Function descriptions
For every function identified, the description includes:
Information returned
Function syntax
Expression representative of the function (as applicable)
Notes regarding restrictions or conditions on execution and use (as applicable)
Examples of the function in reports or through simple descriptions

6 2017, MicroStrategy Inc.


Functions Reference

The following sections provide the location of additional examples, list prerequisites for
using this book, and describe the user roles the information in this book was designed
for.

The sample documents and images in this guide, as well as some example steps,
were created with dates that may no longer be available in the MicroStrategy
Tutorial project. If you are re-creating an example, replace the year(s) shown in
this guide with the most recent year(s) available in the software.

How to find business scenarios and examples


Within this guide, each function is accompanied by an example, as well as some usage
guidelines. The first chapter includes additional examples that involve several functions
in business use cases.
For examples of reporting functionality, see the MicroStrategy Tutorial, which is
MicroStrategys sample warehouse and project. Information about the MicroStrategy
Tutorial can be found in the MicroStrategy Basic Reporting Guide.
Detailed examples of advanced reporting functionality can be found in the
MicroStrategy Advanced Reporting Guide.

Whats new in this guide


MicroStrategy 10
Documentation has been provided for the following new functions:
Condition, page 96: A shortcut function, available for various features in
MicroStrategy Web, that allows you to easily define the condition (filtering) of
the final metric expression.
Level , page 104: A shortcut function, available for various features in
MicroStrategy Web, that allows you to easily define the level (dimensionality) of
the final metric expression.
Transformation, page 116: A shortcut function, available for various features in
MicroStrategy Web, that allows you to easily define transformations for the final
metric expression.
DateDiff, page 121: Calculates the length of time between two dates.
FiscalMonth, page 124: Returns the numeric position of a month within a fiscal
year, for a given input date.
FiscalQuarter , page 125: Returns the numeric position of a quarter within a
fiscal year, for a given input date.
FiscalWeek, page 125: Returns the numeric position of a week within a fiscal
year, for a given input date.

2017, MicroStrategy Inc. 7


Functions Reference

FiscalYear, page 126: Returns the fiscal year of the input date.
QuarterStartDate, page 130: Returns the date of the first day of the quarter in
which a date or timestamp occurs.
ToDateTime (convert string or number to a date or timestamp), page 131:
Converts a string of characters or a number into a date or timestamp.
WeekStartDate, page 132: Returns the date of the first day of the week in which
a date or timestamp occurs.
NullToEmpty, page 149: Converts a value of NULL to an empty string.
WeightedCorr (weighted correlation), page 197: Allows you to apply a weight, or
relative significance to each correlation.
WeightedCov (weighted covariance), page 199: Allows you to apply a weight, or
relative significance to each covariance.
WeightedMean, page 201: Allows you to apply a weight, or relative significance
to each value when determining an average.
WeightedStDev (weighted standard deviation of a sample), page 202: Allows
you to apply a weight, or relative significance to each value in a set of values.
PercentRank , page 217: Displays the ranking of values as a percentage.
PercentRankRelative, page 218: Displays the ranking of values as a percentage,
with the ranking based on a secondary data set.
BeginsWith, page 224: Determines if a text string begins with a specified text
pattern.
Char (convert ASCII code to a character), page 224: Converts a decimal ASCII
code into its associated character.
ConcatAgg (concatenate plus delimiter), page 225: Takes all of the content from
a single input and concatenates the content as a single string.
EndsWith, page 227: Determines if a text string ends with a specified text
pattern.
LastPosition (last position of substring), page 228: Returns the starting position
of the last occurrence of a series of characters in the input string.
Match, page 231: Uses regular expressions to search a string for a pattern of
characters and returns any matches that are found.
RepeatStr (repeat string), page 233: Returns a character or string of characters
the specified number of times.
Replace, page 234: Searches a string for a pattern of characters and replaces
each instance of those characters with the new characters you specify.
Split, page 236: Searches a string, separates the contents into groups of
characters based on a delimiter, and returns the string of characters requested.

8 2017, MicroStrategy Inc.


Functions Reference

ToNumber (convert string to a number), page 238: Converts a string of


characters to its applicable numeric value.
ToString (convert number, date, or timestamp to a string), page 239: Converts
a number, date, or timestamp to a string of characters.
TitleCap (title capitalization), page 237: Returns a string in which the first letter
of every word in the input string is capitalized.
XIRR (internal rate of return for payments at irregular intervals), page 309:
Returns the internal rate of return on a set of payments that do not occur at
regular intervals.
XNPV (net present value of an investment for payments or incomes at
irregular intervals), page 311: Returns the net present value of an investment
based on a discount rate and a set of future payments (negative values) and
income (positive values).
Function support for databases has been updated in Databases that a function can
be evaluated on, page 379.

MicroStrategy Analytics Enterprise


The name of MicroStrategy Desktop has been changed to MicroStrategy Developer.

MicroStrategy 9.4
Function support for databases has been updated in Databases that a function can
be evaluated on, page 379.

Prerequisites
Before reading this document, you should be familiar with:
Basic MicroStrategy terminology such as metrics, facts, attributes, and so on. This
information is found in the Basic Reporting Guide.
Standard mathematical function notation.

Who should use this guide


This document is designed for any user who needs to create an expression using any of
the predefined functions MicroStrategy offers.

Resources
This section provides details on how to access books, online help, MicroStrategy
Education and Consulting resources, and how to contact MicroStrategy Technical

2017, MicroStrategy Inc. 9


Functions Reference

Support.

Documentation
MicroStrategy provides both manuals and online help; these two information sources
provide different types of information, as described below:
Manuals: MicroStrategy manuals provide:
Introductory information and concepts
Examples and images
Checklists and high-level procedures to get started
The steps to access the manuals are described in Accessing manuals and other
documentation sources, page 15.
Most of these manuals are also available printed in a bound, soft cover format. To
purchase printed manuals, contact your MicroStrategy Account Executive with a
purchase order number.
Help: MicroStrategy online help provides:
Detailed steps to perform procedures
Descriptions of each option on every software screen

Additional formats
MicroStrategy manuals are available as electronic publications, downloadable on the
Apple iBooks Store or Google Play, and can be read on your iOS or Android device
respectively. To download a book, search for the books title in the iBookstore or Google
Play. To view a list of manuals that are currently available, scan the following QR codes
using your devices camera:
For iOS devices, scan the following QR code:

For Android devices, scan the following QR code:

10 2017, MicroStrategy Inc.


Functions Reference

For new MicroStrategy releases, it may take several days for the latest manuals to
be available on the iBookstore or Google Play.

Translations
For the most up-to-date translations of MicroStrategy documentation, refer to the
MicroStrategy Knowledge Base. Due to translation time, manuals in languages other than
English may contain information that is one or more releases behind. You can see the
version number on the title page of each manual.

Finding information
You can search all MicroStrategy books and Help for a word or phrase, with a simple
Google search at http://www.google.com. For example, type MicroStrategy derived
metric or MicroStrategy logical table into a Google search. As described above, books
typically describe general concepts and examples; Help typically provides detailed steps
and screen options. To limit your search to MicroStrategy books, on Googles main page
you can click More, then select Books.

Manuals for MicroStrategy overview and evaluation


Introduction to MicroStrategy: Evaluation Guide
Instructions for installing, configuring, and using the MicroStrategy Evaluation
Edition of the software. This guide includes a walkthrough of MicroStrategy features
so you can perform reporting with the MicroStrategy Tutorial project and its sample
business data.
MicroStrategy Evaluation Edition Quick Start Guide
Overview of the installation and evaluation process, and additional resources.

Resources for security


Usher Help
Steps to perform mobile identity validation using the Usher mobile security network
to issue electronic badges for identifying users.

2017, MicroStrategy Inc. 11


Functions Reference

Manuals for query, reporting, and analysis


MicroStrategy Installation and Configuration Guide
Information to install and configure MicroStrategy products on Windows, UNIX,
Linux, and HP platforms, and basic maintenance guidelines.
MicroStrategy Upgrade Guide
Steps to upgrade existing MicroStrategy products.
MicroStrategy Project Design Guide
Information to create and modify MicroStrategy projects, and create the objects that
present your organizations data, such as facts, attributes, hierarchies,
transformations, advanced schemas, and project optimization.
MicroStrategy Basic Reporting Guide
Steps to get started with MicroStrategy Web, and how to analyze and format data in
a report. Includes the basics for creating reports, metrics, filters, and prompts.
MicroStrategy Advanced Reporting Guide: Enhancing Your Business
Intelligence Application
Steps to create Freeform SQL reports, Query Builder reports, complex filters and
metrics, use Data Mining Services, and create custom groups, consolidations, and
complex prompts.
MicroStrategy Report Services Document Creation Guide: Creating
Boardroom Quality Documents
Steps to create Report Services documents, add objects, and format the document
and its objects.
MicroStrategy Dashboards and Widgets Creation Guide: Creating
Interactive Dashboards for Your Data
Steps to create MicroStrategy Report Services dashboards and add interactive
visualizations.
MicroStrategy In-memory Analytics Guide
Information to use MicroStrategy OLAP Services features, including Intelligent
Cubes, derived metrics, derived elements, dynamic aggregation, view filters, and
dynamic sourcing.
MicroStrategy Office User Guide
Instructions to use MicroStrategy Office to work with MicroStrategy reports and
documents in Microsoft Excel, PowerPoint, and Word, to analyze, format, and
distribute business data.
MicroStrategy Mobile Analysis Guide: Analyzing Data with
MicroStrategy Mobile

12 2017, MicroStrategy Inc.


Functions Reference

Steps to use MicroStrategy Mobile to view and analyze data, and perform other
business tasks with MicroStrategy reports and documents on a mobile device.
MicroStrategy Mobile Design and Administration Guide: A Platform for
Mobile Intelligence
Information and instructions to install and configure MicroStrategy Mobile, as well
as steps for a designer working in MicroStrategy Developer or MicroStrategy Web to
create effective reports and documents for use with MicroStrategy Mobile.
MicroStrategy System Administration Guide: Tuning, Monitoring, and
Troubleshooting Your MicroStrategy Business Intelligence System
Steps to implement, deploy, maintain, tune, and troubleshoot a MicroStrategy
business intelligence system.
MicroStrategy Supplemental Reference for System Administration: VLDB
Properties, Internationalization, User Privileges, and other Supplemental
Information for Administrators
Steps for administrative tasks such as configuring VLDB properties and defining data
and metadata internationalization, and reference material for other administrative
tasks.
MicroStrategy Functions Reference
Function syntax and formula components; instructions to use functions in metrics,
filters, attribute forms; examples of functions in business scenarios.
MicroStrategy MDX Cube Reporting Guide
Information to integrate MicroStrategy with MDX cube sources. You can integrate
data from MDX cube sources into your MicroStrategy projects and applications.
MicroStrategy Operations Manager Guide
Instructions for managing, monitoring, and setting alerts for all of your
MicroStrategy systems from one console. This guide also includes instructions for
setting up and using Enterprise Manager to analyze your MicroStrategy system usage.

Manual for the Human Resources Analytics Module


Human Resources Analytics Module Reference

Software Development Kits


MicroStrategy Developer Library (MSDL)
Information to understand the MicroStrategy SDK, including details about
architecture, object models, customization scenarios, code samples, and so on.
MicroStrategy Web SDK

2017, MicroStrategy Inc. 13


Functions Reference

The Web SDK is available in the MicroStrategy Developer Library, which is


part of the MicroStrategy SDK.

Documentation for MicroStrategy Portlets


Enterprise Portal Integration Help
Information to help you implement and deploy MicroStrategy BI within your
enterprise portal, including instructions for installing and configuring out-of-the-box
MicroStrategy Portlets for several major enterprise portal servers.
This resource is available from http://www.microstrategy.com/producthelp.

Documentation for MicroStrategy GIS Connectors


GIS Integration Help
Information to help you integrate MicroStrategy with Geospatial Information
Systems (GIS), including specific examples for integrating with various third-party
mapping services.
This resource is available from http://www.microstrategy.com/producthelp.

Help
Each MicroStrategy product includes an integrated help system to complement the
various interfaces of the product as well as the tasks that can be accomplished using the
product.
Some of the MicroStrategy help systems require a web browser to be viewed. For
supported web browsers, see the MicroStrategy Readme.
MicroStrategy provides several ways to access help:
Help button: Use the Help button or ? (question mark) icon on most software
windows to see help for that window.
Help menu: From the Help menu or link at the top of any screen, select
MicroStrategy Help to see the table of contents, the Search field, and the index for
the help system.
F1 key: Press F1 to see context-sensitive help that describes each option in the
software window you are currently viewing.

For MicroStrategy Web, MicroStrategy Web Administrator, and MicroStrategy


Mobile Server, pressing the F1 key opens the context-sensitive help for the
web browser you are using to access these MicroStrategy interfaces. Use the
Help menu or ? (question mark) icon to access help for these MicroStrategy
interfaces.

14 2017, MicroStrategy Inc.


Functions Reference

Accessing manuals and other documentation sources


The manuals are available from http://www.microstrategy.com/producthelp, as well as
from your MicroStrategy disk or the machine where MicroStrategy was installed.

Adobe Reader is required to view these manuals. If you do not have Adobe Reader
installed on your computer, you can download it from
http://get.adobe.com/reader/.

The best place for all users to begin is with the MicroStrategy Basic Reporting Guide.
To access the installed manuals and other documentation sources, see the following
procedures:
To access documentation resources from any location, page 15
To access documentation resources on Windows, page 15
To access documentation resources on UNIX and Linux , page 15

To access documentation resources from any location

1 Visit http://www.microstrategy.com/producthelp.

To access documentation resources on Windows

1 From the Windows Start menu, choose Programs (or All Programs),
MicroStrategy Documentation, then Product Manuals. A page opens in your
browser showing a list of available manuals in PDF format and other documentation
sources.
2 Click the link for the desired manual or other documentation source.

If bookmarks are not visible on the left side of a product manual, from the View
menu click Bookmarks and Page. This step varies slightly depending on your
version of Adobe Reader.

To access documentation resources on UNIX and Linux

1 Within your UNIX or Linux machine, navigate to the directory where you installed
MicroStrategy. The default location is /opt/MicroStrategy, or
$HOME/MicroStrategy/install if you do not have write access to
/opt/MicroStrategy.
2 From the MicroStrategy installation directory, open the Help folder.
3 Open the Product_Manuals.htm file in a web browser. A page opens in your
browser showing a list of available manuals in PDF format and other documentation
sources.
4 Click the link for the desired manual or other documentation source.

2017, MicroStrategy Inc. 15


Functions Reference

If bookmarks are not visible on the left side of a product manual, from the View
menu click Bookmarks and Page. This step varies slightly depending on your
version of Adobe Reader.

Documentation standards
MicroStrategy online help and PDF manuals (available both online and in printed
format) use standards to help you identify certain types of content. The following table
lists these standards.

These standards may differ depending on the language of this manual; some
languages have rules that supersede the table below.

Type Indicates

bold Button names, check boxes, options, lists, and menus that are the focus of
actions or part of a list of such GUI elements and their definitions
Example: Click Select Warehouse .
italic Names of other product manuals and documentation resources
When part of a command syntax, indicates variable information to be replaced
by the user
Example: Type copy c:\filename d:\foldername\filename

Courier Calculations
font Code samples
Registry keys
Path and file names
URLs
Messages displayed in the screen
Text to be entered by the user
Example: Sum(revenue)/number of months.

Example: Type cmdmgr -f scriptfile.scp and press Enter.

+ A keyboard command that calls for the use of more than one key (for example,
SHIFT+F1).
A note icon indicates helpful information for specific situations.

A warning icon alerts you to important information such as potential security risks;
these should be read before continuing.

16 2017, MicroStrategy Inc.


Functions Reference

Education
MicroStrategy Education Services provides a comprehensive curriculum and highly
skilled education consultants. Many customers and partners from over 800 different
organizations have benefited from MicroStrategy instruction.
Courses that can help you prepare for using this manual or that address some of the
information in this manual include:
MicroStrategy Developer: Reporting Essentials
MicroStrategy Web: Report Analysis
MicroStrategy Web: Report Design
For a detailed description of education offerings and course curriculums, visit
http://www.microstrategy.com/Education.

Consulting
MicroStrategy Consulting Services provides proven methods for delivering leading-edge
technology solutions. Offerings include complex security architecture designs,
performance and tuning, project and testing strategies and recommendations, strategic
planning, and more. For a detailed description of consulting offerings, visit
http://www.microstrategy.com/services-support/consulting.

Technical Support
If you have questions about a specific MicroStrategy product, you should:
1 Consult the product guides, Help, and readme files. Locations to access each are
described above.
2 Consult the MicroStrategy Knowledge Base online at
https://resource.microstrategy.com/support.

A technical administrator in your organization may be able to help you resolve


your issues immediately.

3 MicroStrategy Technical Support can be contacted by your company's Support


Liaison. Contact information and the Technical Support policy information is
available at http://www.microstrategy.com/services-support/support/contact.

Feedback
Please send any comments or suggestions about user documentation for MicroStrategy
products to: documentationfeedback@microstrategy.com.
Send suggestions for product enhancements to: support@microstrategy.com.

2017, MicroStrategy Inc. 17


Functions Reference

When you provide feedback to us, please include the name and version of the products
you are currently using. Your feedback is important to us as we prepare for future
releases.

18 2017, MicroStrategy Inc.


1
UNDERSTANDING FUNCTIONS
IN MICROSTRATEGY
This chapter provides the following information:
The basics of MicroStrategy objects, object definitions, and functions, page 19
Function syntax and formula components, page 21
Using functions in expressions, page 39
Adding functions to expressions with the Insert Function Wizard, page 55
How MicroStrategy processes functions, page 57
Additional examples of functions in expressions, page 72

The basics of MicroStrategy objects, object


definitions, and functions
To understand functions and their role in MicroStrategy, it is important to grasp the
basic concepts underlying objects and expressions.
An object is a basic building block in MicroStrategy. There are three types of objects:
schema objects, application objects, and configuration objects. Schema objects include
facts, hierarchies, and custom groups; application objects include reports, documents,
and metrics; and configuration objects include project sources, database instances, and
users. (This list of objects is not exhaustive.)
MicroStrategy objects are created, maintained and deleted by you. Your Architect, for
instance, will create attributes by mapping conceptual data from your data warehouse to
names like Month, Customer Name, or Product Category that will appear on your
reports. Your Designer will create metrics that access and manipulate numeric data from
your data warehouse.
Many objects require you to specify an expression when creating or modifying them. An
expression is any combination of characters that can be used as a result. Examples
include the following:
Month + 5

2017, MicroStrategy Inc. 19


Functions Reference

Sum(Revenue)
New York AND Los Angeles
In the first example, each Month element in your data warehouse is assigned a numeric
ID between 1 and 12, where January is 1, February is 2, and so on. You want to generate
a report with a five-month forecast. One approach would begin with creating a new
attribute called 5 Months Ahead, using the expression Month + 5 in its attribute
definition.
Expressions can be used in many places. Metrics in particular often require complicated
expressions. In the second example above, the expression Sum(Revenue) is used to
define a relatively simple metric. Sum tells MicroStrategy to read individual Revenue
entries from the data warehouse and add them together to produce one single number
that will be displayed as Revenue on your report. This metric is a MicroStrategy object
that you can create.
The last example above shows a logical expression, which might be used in a filter. A
filter comprised of the expression New York AND Los Angeles would let a user
answer questions such as Which business travelers flew out of New York and out of Los
Angeles in 2006?
Expressions often form the basis of objects, which are the basic building blocks of all
MicroStrategy content and functionality. Objects that rely on these expressions are often
edited by changing the object expressions.

In this book, the terms object expression and object definition are
interchangeable unless otherwise noted.

To create an expression that accomplishes your goal, you will almost always utilize a
MicroStrategy function. Functions in MicroStrategy are powerful tools used to define
MicroStrategy objects (when they are integrated into object definitions) and initiate
complex user-selected calculations. The example Sum(Profit) in a metric definition
uses the Sum function to add various Profit entries in a data warehouse to arrive at one
final number to display on a report.
Wherever you use an expression, you can use a function. From creating basic objects to
building complex reports and analyzing data, you can create custom expressions using a
large library of functions that come with and are supported by MicroStrategy. Although
functions are most commonly used in metric expressions, they are also used to define
attribute forms, consolidation elements, custom groups, filters, facts, subtotals, and
transformations, all of which are MicroStrategy objects.

Functions commonly used to create specific objects


The following table lists the function types described above, several functions belonging
to each type, and the MicroStrategy objects that can be created using those functions.

Function Type Function Examples MicroStrategy Objects That Can Use These Functions

Single-value Arithmetic operators Attribute form


(, +, /, *) Consolidation

20 2017, MicroStrategy Inc.


Functions Reference

Function Type Function Examples MicroStrategy Objects That Can Use These Functions

Abs Custom group


Round Fact
Ln Metric
Cos Subtotal
Transformation
Group-value Avg Metric
Count Subtotal
Sum
OLAP Rank Metric
MovingMin
NTile
Logical And Filter
Or
Comparison Between Filter
ApplyComparison
Apply ApplySimple Attribute form
ApplyAgg Consolidation
ApplyOLAP Custom group
ApplyLogic Fact
ApplyComparison Metric
Transformation
Filter

Function syntax and formula components


You can use functions in any situations where you build an expression. Although an
expression can have unique characteristics, there is a basic syntax for applying functions
in expressions. The use of each function is described in detail in the rest of this book.
This section covers the basics of functions and their key components.
Each function is designated by a function name. Functions operate on an argument that
can be a fact, attribute, metric, or constant, and the functions behavior is often further
specified using one or more parameters. Function parameters are used to fine-tune the
behavior of functions. Arguments provide the inputs to functions.

2017, MicroStrategy Inc. 21


Functions Reference

In this guide, MicroStrategy functions are grouped into function types. This section
provides information on function types, as well as their parameters and arguments.
This guide does not include information on Data Mining functions. This information can
be found in the Data Mining Services chapter of the MicroStrategy Advanced
Reporting Guide.

Function types
MicroStrategy functions are classified into the following types:
Single-value functions (also known as Non-grouping or Scalar functions): These
functions operate on each individual component of an input variable or argument,
resulting in an output element for each component. Examples of this category are
simple mathematical operators (+, -, *, /), Abs, Accrint, Ddb, Cos, Ln, Round,
Truncate, ApplySimple, and so on. For details, see Single-value functions, page 23.
Group-value functions (also known as Grouping or Aggregate functions): These
functions take one or more lists of values as input and generate a single output value
for each list. Examples of this category are Avg, AvgDev, Correlation, Count,
HomoscedasticTTest, Intercept, Slope, StDev, Sum, ApplyAgg, and so on. For details,
see Group-value functions, page 24.
OLAP functions (also known as Relative functions): These functions take multiple
elements from a list and return a new list of elements. Each element is related to and
dependent on one or more other elements in the list, and the relative positions of
elements within the list determines how computation is performed. Examples
include Rank, RunningSum, MovingAvg, NTile, ApplyOLAP, and so on. For details,
see OLAP (Relative) functions, page 25.
Comparison operators: These operators compare single values or lists of values,
or compare a list to a threshold value. Examples of this category are Between, Like,
Greater than(>), Less than (<), ApplyComparison, and so on. For details, see
Comparison operators, page 26.
Logical operators: These operators provide basic comparisons and return TRUE
or FALSE values based on the evaluation of the formula. This type of operator
includes And, Or, and Not. For details, see Logical operators, page 26.
Apply functions: These functions provide access to functions and syntactic
constructs that are not standard in MicroStrategy but are offered by various
relational database management system (RDBMS) platforms. Each of the functions
in this category substitutes for one of the function types mentioned above and can be
used wherever that type is used. For example, ApplySimple can be used wherever a
single-value function is used. For details, see Apply (Pass-through) functions, page
27.

22 2017, MicroStrategy Inc.


Functions Reference

Single-value functions
A single-value function operates on each individual component of one or more
arguments, resulting in an output component for each set of input components.
Subtraction, addition, division, and multiplication operators (, +, /, *) are common
examples of single-value functions. Other examples include Abs, Cos, Ln, Round, Sin,
Trunc, ApplySimple, and so on.
Single-value functions can be used to create facts, metrics, attribute forms, consolidation
elements, and transformations.
For example, using a single-value function that operates on four arguments, where each
argument is composed of a five-component list, returns five components. In other
words, the number of output components is equal to the number of input components in
each argument. A simple example using numbers follows:
Using the single-value + (addition) function, A+B=C
Where
A=1 (an argument containing one component whose value is 1)
B=2 (an argument containing a single component whose value is 2)
C=3 (the returned value, containing a single output component, whose value is 3)

In the example above, A, B, and C each contain one component. More generally,
given variables D and E used as arguments in the addition function, where D and E
each contain a five-component list, D+E results in a five-component list. Single-
value functions need not take a single value as an argument or even a single
argument. Rather, the basic requirement for a function to be categorized as single-
value is that the number of output components equals the number of input
components of the arguments.

The following two examples illustrate the use of single-value functions in the creation of
a transformed fact and a compound metric. Transforming a fact and creating a
compound metric are similar in that both use a single-value function to turn one or more
lists of values into another list of values. They differ in that, for a transformation, the
single-value function must be applied before a group-value function, while in a
compound metric the single-value function is applied after the group-value function.

Example 1: Transformed fact


Avg(Abs([Account Transactions]))
Suppose Account Transactions is a list of the following values: -300.5, -7.7, 900, -80,
and 2.2. The single-value function, Absolute, is applied to the list. The result set is the
absolute value of each element in the list: 300.5, 7.7, 900, 80, 2.2. It is important to note
that the single-value function returns five elements of output for five elements of input.
Once the single-value function has been applied, the group-value function, Avg, is applied
to produce an average of those values, 258.08. For more information on the Abs and Avg
functions, see Abs (absolute value), page 317 and Avg (average), page 95.

2017, MicroStrategy Inc. 23


Functions Reference

Example 2: Compound metric


Avg(Revenue){Quarter} - Avg(Cost){Quarter}
In this example, the group-value function Avg is applied to both the Revenue and Cost
facts in your data warehouse. First, MicroStrategy uses the list of values for the two input
variables Revenue and Cost to generate, using the Avg function twice, two new variables
each containing a single value. The two resulting variables are stored as intermediate
results. Next, the single-value function - (subtraction) is applied by MicroStrategy to
subtract one intermediate result from the other, resulting in a single value for the metric.
For more information on the Abs and Avg functions, see Abs (absolute value), page 317
and Avg (average), page 95.
In both of the previous examples, both single-value and group-value functions were used.
The next section addresses group-value functions in more detail.

Group-value functions
A group-value function takes one or more lists of values as input and returns a single
output value for each list. The existence of a GROUP BY clause in a SQL statement
indicates that you are using a group-value function.
The most common group-value functions include Avg, Count, Max, Median, Min, Stdev,
Sum, Var, ApplyAgg, and so on. First, Last, IRR, and NPV functions also belong to this
category, but they have an additional sort by feature (for more information, see Common
parameters, page 33). Sort by specifies the order that the values returned by an
expression will appear on a report. (For more information on the SortBy parameter, see
BreakBy and SortBy parameters, page 33.)
Group-value functions can be used to create simple metrics, nested metrics, and
compound metrics, as well as in the calculation of subtotals. The following examples
illustrate their use.

Example 1: Average
Avg([Employee Age])
In this example, the group-value function Avg operates on the argument Employee Age,
which is a list of the following elements: 27, 35, 32, 47, 43, 40, 30. The function reduces
the seven elements of the input value to a single output value of 36. For more
information on the Avg function, see Avg (average), page 95.

Example 2: Median
Median([Employee Age])
The only difference between Example 2 and Example 1 above is the fact that the group-
value function, Median, is used, instead of Avg. Again, the function reduces the seven
elements of the input value to a single output value of 35. For more information, see
Median, page 107.

24 2017, MicroStrategy Inc.


Functions Reference

OLAP (Relative) functions


Online Analytical Processing (OLAP) functions are also referred to as Relative functions
because each element in a list of values is related to and dependent on one or more other
elements in the list, and the positions of the elements within the list determine how
computation is performed.
An OLAP function takes multiple elements from a list and returns a new list of elements.
Unlike group-value functions, though, the number of elements in the input list and the
number of elements in the output list remains the same. Unlike single-value functions,
the computation depends upon the conditions set by the BreakBy parameter that defines
when the calculation restarts and the SortBy parameter that defines how the list of
values is sorted (see Common parameters, page 33).
OLAP functions include Rank, all the functions with Moving as the prefix of the name
(for example, MovingDifference, MovingMin, MovingStdev, and so on), all the
functions with Running as the prefix (for example, RunningAvg, RunningCount,
RunningSum, and so on), and all the NTile functions (such as NTile, NTileSize,
NTileValue, and NTileValueSize). ApplyOLAP also belongs to the OLAP category.
OLAP functions are only used in the creation of metrics. The following is an example.

Example: RunningSum
RunningSum <BreakBy={[Customer Region]}, SortBy=
([Customer State]) >(Revenue)
BreakBy refers to the attribute or hierarchy where calculations for an OLAP function
restart. To break by an attribute or hierarchy means to restart calculations that use
OLAP, or Relative, functions when the analytical engine reaches the next instance of the
specified attribute or hierarchy. Examples of OLAP functions include RunningStdevP,
Rank, NTile, and various expressions that calculate percent values. To break by an
attribute or hierarchy in an expression, you set the BreakBy parameter.
The RunningSum metric computes the sum of the revenue for each Customer Region by
adding the revenue for each Customer State to the revenue of the Customer States in the
rows above it and displaying the incremented total. The BreakBy Customer Region
condition causes calculations to begin again, however, when the next Customer Region is
encountered. (Notice in the figure below that the metrics Total Revenue and the
Running Sum for Arizona are equal because the calculation for Running Sum has
restarted, since Arizona is categorized in Southwest, a different Customer Region than
Wyoming, the previous Customer State on the report.) Because of the SortBy Customer
State condition, the Customer States are listed in ascending (alphabetical) order, as
shown in the report excerpt below.

2017, MicroStrategy Inc. 25


Functions Reference

Comparison operators
Comparison operators allow you to compare values. Using these operators, you can
compare single values or lists of values, or compare a list to a threshold value.
Comparison operators include < (less than), > (greater than), = (is equal to), Between,
Contains, Ends with, ApplyComparison, and so on. They are only used to create filters,
which limit report data to a subset based on your need.

Example: > (Greater than)


Revenue > 500000
In this example, the filter limits the states in your yearly income report to those with
accrued revenue greater than $500,000.

Logical operators
Logical operators provide basic comparisons and return TRUE or FALSE values based on
the evaluation of the formula. For numeric values, 0 is treated as FALSE, and 1 is treated
as TRUE. These operators provide a means to combine data evaluations and comparison
operators into complex expressions. These expressions, in turn, can answer questions
such as Which of our regions produced revenue that exceeded a success threshold?
Logical operators include And, Or, Not, and ApplyLogic, all of which can only be used to
build filters where criteria are provided for the inclusion and exclusion of data from a
report display or metric calculation.

26 2017, MicroStrategy Inc.


Functions Reference

Example: And
((Revenue - Cost) > 50000) And [Sell-through Percentage]
> 25
Built for the attribute State, this filter limits report data to those states where Profit
(defined as Revenue - Cost) is greater than $50,000 and the Sell-through Percentage
is greater than 25%.

Apply (Pass-through) functions


The terms Apply functions and Pass-through functions are interchangeable. They both
denote functions in MicroStrategy that provide access to functions or syntactic
constructs that are not standard in MicroStrategy but are provided by various Relational
Database Management System (RDBMS) platforms. The name Pass-through derives
from the fact that MicroStrategy passes information to a database which then uses its
own functions. (Using the native functionality of your RDBMS via Pass-through
functions requires that you know the syntax of your particular RDBMS. That syntax is
beyond the scope of this book and will vary from RDBMS to RDBMS.) RDBMS
functions, while necessary, must be used with care, since they always bypass
MicroStrategys parsers and validators.
There are five predefined Apply functions that can be used to replace regular or
predefined functions of the same type. The functions are as follows:
ApplySimple: These functions are used where simple (e.g., arithmetic) operators can
be used.
ApplyAgg: These functions are used where aggregate functions (e.g., Sum) can be
used.
ApplyRelative: These functions are used where Online Analytical Processing (OLAP)
functions (e.g., Rank) can be used.
ApplyComparison: These functions are used where comparison operators (e.g., >, =,
Like and In) can be used.
ApplyLogic: These functions are used where logical operators (e.g., AND, OR, and
NOT) can be used.
With Apply functions, project designers can customize expressions in the Attribute, Filter
and Metric editors to utilize RDBMS functions that are not provided by MicroStrategy.

MicroStrategy strongly advises against using Apply functions when standard


MicroStrategy functions can be used to achieve the same goal, because using
RDBMS functions effectively bypasses the validations and other benefits of
MicroStrategy products. Using Apply functions is recommended only when
corresponding functionality does not exist in MicroStrategy. When you need to use
an Apply function, MicroStrategy encourages you to submit an enhancement
request for inclusion of the desired feature in a future product release.

2017, MicroStrategy Inc. 27


Functions Reference

Example: ApplyComparison used to check a prompted date


In this example, a table in your data warehouse contains the columns Item, Effec Date,
and Term Date (as well as Revenue), as shown below:

Item Effec Date Term Date Revenue

Blouse 06/01/2007 07/30/2007 1000


Jeans 05/30/2007 06/17/2007 500
Gloves 10/01/2007 10/25/2007 150
Leather Shoes 06/15/2007 06/22/2007 750
Winter Hat 11/01/2007 11/08/2007 900
Winter Boots 12/01/2007 12/15/2007 2200

Each row in the table corresponds to an item that was on sale during the time between
Effec Date and Term Date. Your objective is to generate a report that lists all items (and
an associated metric that you choose) that were on sale on a particular date your user
chooses at run time. To generate this report, first create a value prompt named Test Date
that allows the user to input a date. Next, using that prompt, create a report filter using
the Custom expression box located in the Advanced Qualification pane of the Filter
Editor, as shown below.

Even though the filter is validated when you click Validate, MicroStrategy returns an
error when the report is executed. The error results from the fact that you are supplying
the SQL engine with two attributes and a value prompt, while MicroStrategy is expecting
to compare an attribute to the attributes Effec Date and Term Date. In effect, you have a
type mismatch problem.
In this case, you can use an Apply function. Instead of having MicroStrategy test the date
value prompt, you instruct your database to perform the test. It is important to
remember that you have chosen to use an Apply function only because MicroStrategy

28 2017, MicroStrategy Inc.


Functions Reference

does not have a built-in function to accomplish your task. If an appropriate


MicroStrategy function existed, you would have used it instead of an RDBMS function,
because the latter does not offer the validating features that MicroStrategy does. (To use
Apply functions, you must know the syntax of the corresponding function or operation
in the RDBMS you are using.)
To test the date prompt, use a custom expression to pass three values to the database for
comparison: the value prompt Test Date, the attribute Effec Date, and the attribute Term
Date. All three of these values are passed to the database using placeholders in the form
of #n, where n is a positive integer that increases by 1 for each successive item being
passed, starting with 0. The first value passed is referred to as #0, the second is #1, the
third #2, and so on. The Custom expression in the Advanced Qualification pane of the
Filter Editor depicted below shows the syntax needed for this example:

Notice that the syntax is nested. The outer portion of the expression contains the
MicroStrategy function ApplyComparison, as well as the MicroStrategy prompt Test Date
and the attributes Effec Date and Term Date.
The inner portion of the syntax, which is contained within double quotes, is the database
operation #0 between #1 and #2. Code that is passed to the database using an Apply
function is always enclosed in quotes, and the arguments that are passed with that code
are written as placeholders in the form of #n, with the specific forms of the passed
attributes specified by the characters after the @ sign. In this example, [Effec
Date]@ID specifies that MicroStrategy pass the ID form of the Effec Attribute instead
of the DESC or any other form that may exist in the database. At run time, #0, #1, and
#2 are replaced by Test Date, Effec Date, and Term Date, respectively, so that the
database effectively receives the following syntax:
Test Date between Effec Date and Term Date
If the user chooses 06/16/07 as the value of Test Date at run time, the RDBMS reads the
table row by row to see if the date falls between Effec Date and Term Date. Whenever
06/16/07 falls between Effec Date and Term Date on a particular row, the item on that
row is returned in the result set. In this example, Blouse, Jeans, and Leather Shoes are
returned. (You can verify this result by looking at the data warehouse table shown in the
beginning of this section.) If your report is set up with Item as a row attribute, those

2017, MicroStrategy Inc. 29


Functions Reference

three items appear on your report, indicating that they (and only they) were on sale on
06/16/07.
For additional information about Apply functions, see Apply (Pass-Through) functions,
page 134. The syntax of each Apply function as well as examples appear in the sections
that immediately follow.

Example: Test whether Hire Date is in the current year


Your HR department requires a list of employees that have been hired during the current
calendar year. The following custom expression uses the ApplySimple function to test
whether the year of Hire Date is the same as the current year:
ApplySimple ( "datepart(yy, #0)", [Hire Date]@ID) =
ApplySimple ( "datepart(yy, getdate())", [Hire
Date]@ID)
Each piece of the custom expression is explained below. More detailed information on
Apply functions in general can be found in Apply (Pass-through) functions, page 27.
More information on ApplySimple functions, specifically, is found in ApplySimple, page
137.
The datepart function extracts a specified part of a given date. The first
datepart function extracts the year (as directed by yy) from the ID attribute form
of the Hire Date attribute. The ID attribute formas opposed to the DESC or any
other attribute formis specified by @ID.
The placeholder, #0, stands for the argument [Hire Date]@ID that is passed to
your RDBMS. (Apply functions use your databases computational capabilities instead
of those of MicroStrategy.)
The second datepart function extracts the year (as instructed by yy) from the
current, or system, date. The system date is obtained via the RDBMS function
getdate().
Your RDBMS extracts the year from both the Hire Date and the system date, with
MicroStrategy passing information to it. The container that hands the necessary
function to your RDBMS is an Apply function, ApplySimple. In other words,
ApplySimple acts as an interface between you and the database, and when the
RDBMS returns both year values, they are compared with the = operator. If the year
of a particular Hire Date element is the same as the year of the system date, the
custom expression statement evaluates as true and that Hire Date attribute element is
returned in the result set of your report. If the year of a particular Hire Date element
is different than the year of the system date, the custom expression statement
evaluates as false, and that Hire Date attribute element is filtered out of the report.

The attribute Hire Date is enclosed in brackets. Any time you type an attribute
whose name contains one or more spaces, the attribute must be enclosed in
brackets. (The use of brackets around compound object names is standard for
many objects in MicroStrategy and is not restricted to custom expressions and
Apply functions.)

30 2017, MicroStrategy Inc.


Functions Reference

The above example used an Apply function, ApplySimple. The next example uses
ApplyComparison.

Example: Customer City = Call Center using ApplyComparison


You need a list of customers who live in the same city as one of your call centers. While it
is possible to generate this report with a custom expression that does not use an Apply
function, this example uses an ApplyComparison function to demonstrate Apply
functionality within the custom expression. (For steps to create this report without the
use of an Apply function, see the Attribute-to-attribute qualifications section of the
Advanced Filters chapter of the Advanced Reporting Guide.)
The custom expression used here evaluates whether one attribute is exactly the same as
another:
ApplyComparison (#0 like #1,
[Customer City]@DESC, [Call Center]@DESC)
Each piece of the custom expression is explained below:
The ApplyComparison function is used with RDBMS comparison operators, such
as the like operator used in this example.
#0 like #1 is the actual comparison, comparing the first argument, #0, with the
second argument, #1. Remember that this comparison is done by your RDBMSnot
by MicroStrategy.
[Customer City]@DESC sets the first argument passed to your RDBMS as the
description form of the Customer City attribute, while [Call Center]@DESC
sets the second argument passed to your RDBMS as the description form of the Call
Center attribute.

The attributes Customer City and Call Center are enclosed in brackets. Any
time you type an attribute whose name contains one or more spaces, the attribute
must be enclosed in square brackets. (The use of brackets around compound object
names is standard for many objects in MicroStrategy and is not restricted to
custom expressions and Apply functions.)

Placing a filter that uses the custom expression above on a report that lists the Customer
City, Customer, and Call Center attributes yields the results below. (Only a portion of the
report is shown. Also, the Revenue metric has been added.)

2017, MicroStrategy Inc. 31


Functions Reference

Notice that the custom expression qualification filter accomplished the goal of returning
only data that satisfies the criterion that the Customer City attribute is the same as
the Call Center attribute.

Function parameters
Parameters determine how functions perform calculations. Any function, whether
standard or user-defined, can have parameters, which are contained within angle
brackets <> in an expression. If more than one parameter is used, they are separated by
commas.

Function parameter notations are only displayed in the Developer interface if the
parameter settings are changed from the default and you have set your View option
to Show Function Parameters.

You define parameters in the Function Name Parameters dialog box, which displays the
tabs Parameters, Break By, and Sort By. For steps on how to access this dialog box and
how to set function parameters with the Insert Function Wizard, see Accessing and
modifying function parameters, page 35.

32 2017, MicroStrategy Inc.


Functions Reference

Since every function object has parameters, the Parameters tab is always displayed. If a
function has additional parameters, such as BreakBy and SortBy, the related tabs are
displayed accordingly. The following subsections discuss the three tabs in more detail:
Common parameters, page 33
BreakBy and SortBy parameters, page 33
The details of each function are covered in this guide, including a listing and description
of each parameter that is available for the function. All parameters are listed within angle
brackets <> as part of the function syntax. To review the details on the parameters
available for each function, review the functions provided in:
Chapter 2, Standard Functions
Chapter 3, Operators
Chapter 4, Plug-In Package Functions

Common parameters
There are three common Parameter settings for a function object:
Distinct: is a TRUE/FALSE parameter that allows you to use all values or only the
unique values in the calculation.
Fact ID: forces the calculation to take place on a fact table containing the Fact_
ID.
NULL: is a TRUE/FALSE parameter that determines if the NULL value can be used
in the calculation.
Not all these settings apply to every function. In general, all group-value functions display
the FactID Parameter setting. OLAP functions do not have any of these Parameter
settings, but they may have BreakBy or SortBy parameters.

BreakBy and SortBy parameters


In addition to the Parameters settings, many functions have BreakBy or SortBy
parameters, each of which has its own individual settings:
BreakBy: The logical level where the calculation of values for an expression restarts.
To break by an attribute or hierarchy means to restart counting values for
expressions that use relative functions. Examples of relative functions are
RunningStdevP, Rank, NTile, and expressions that calculate rank or percent values.
The break by level must at the same level of aggregation or a higher level of
aggregation used for the expression itself.
For example, in the report shown below the Rank by Value metric ranks the revenue
values. The Rank function for this metric uses a BreakBy of the Customer Region
attribute, which means the rank calculation is restarted for each customer region.
This ensures that the revenue is ranked by customer region, rather than ranking all
of the revenues together across customer regions. While ranking all the revenues

2017, MicroStrategy Inc. 33


Functions Reference

across customer regions can be useful, this report uses the BreakBy parameter to
focus on revenue comparisons within each customer region.

SortBy: The order of the return values of an expression in relation to the order of
the value or metadata object given. A sort by includes whether to sort in ascending or
descending order, and which metadata object to sort by. Sort by may also be
performed on the value of the subexpression, which is the input argument.
For example, in the report shown below the FirstInRange metric returns the first
profit value in a list of profit values. The FirstInRange function for this metric
uses a sort by of the Customer State attribute, which means the first value for each
customer state is returned.

OLAP functions often include BreakBy and SortBy parameters. For example, Rank has a
BreakBy parameter, and MovingAvg has a SortBy parameter.

34 2017, MicroStrategy Inc.


Functions Reference

A few group-value functions (First, Last, IRR, and NPV) are also defined by the SortBy
parameter. The First and Last functions are used effectively to calculate subtotals (see
Subtotal expressions, page 53).
For example, an inventory report lists the on-hand supply for each day. The report
subtotals are the last days inventory. Creating a user-defined subtotal that uses the Last
function provides the last day inventory subtotal. If the SortBy parameters of the
function are not set to sort by Day, the function may not provide the correct answer.

Accessing and modifying function parameters


MicroStrategy Developer provides different methods for accessing and modifying
function parameters. You can access and modify function parameters from the following
interfaces:
Insert Function Wizard: This interface is used to help guide you in the initial
inclusion of a function in an expression for a MicroStrategy object. The Insert
Function Wizard can be used to build a function and add it to an expression for
metrics, attributes, facts, subtotals, and transformations. For more information, see
Adding functions to expressions with the Insert Function Wizard, page 55.
Function Name Parameters dialog box: This interface is used to modify the
parameters of a function that has been added to an object expression and validated.

To access and modify function parameters with the Insert Function


Wizard

1 Open an object editor for a MicroStrategy object that can include functions in its
expression.

For steps to access the Insert Function Wizard from the different object
editors, see the MicroStrategy online help and search for Steps to access the
Insert Function Wizard. You can also see the section Using functions in
expressions, page 39 below that discusses the different types of expressions in
MicroStrategy.

2 Click the Insert Function button, labeled as f(x) on the expression toolbar.

2017, MicroStrategy Inc. 35


Functions Reference

The Insert Function Wizard opens.


3 Use the Next and Back buttons to step through the pages of the Insert Function
Wizard. Each page allows you to modify different function parameters.

The pages that you see depend on the function that you select.

To access and modify function parameters with the Function Name


Parameters dialog box

This functionality is available in any editor in Developer where functions are used
in expressions. For more information, see the following sections:

Metric expressions, page 40


Attribute form expressions, page 46
Custom Group expressions, page 49
Fact expressions, page 50
Filter expressions, page 52
Subtotal expressions, page 53
Transformation expressions, page 54
1 Insert a function into an object expression and validate the expression.

You can insert a function by writing the name of the function and all required
parameters into the expression. You can also insert a function using the Insert
Function Wizard (see the procedure To build an expression using the Insert
Function Wizard, page 55).

2 Highlight the function name, for example RunningSum, within a validated


expression in the expression box.
3 Right-click the function name and select function name parameters, as
demonstrated in the image below.

36 2017, MicroStrategy Inc.


Functions Reference

The Function Name Parameters dialog box opens. All parameter tabs for the selected
function are available, and settings editable, from this dialog. This example uses the
RunningSum function.

Examples of function parameter effects


The following examples briefly illustrate the impact of parameters on function execution.

Example 1: Distinct parameter


Count<Distinct=True>(Order)
In this metric, you modify the default parameter setting to Distinct=True and retrieve a
count of only the unique Orders.

2017, MicroStrategy Inc. 37


Functions Reference

Example 2: RunningSum
RunningSum<BreakBy={Quarter}, SortBy=(Region)>(Revenue)
This metric is defined to display the running sum of revenue on a quarterly basis, sorted
by region in ascending order. For another RunningSum example and its report, see
OLAP (Relative) functions, page 25.

Arguments
Arguments are the input data used in the calculation of a function. Arguments can be
numbers, text, or logical values (such as TRUE or FALSE) as well as constants (such as 1,
2, 3, or NULL). They can be lists of values or variables referencing lists of values.
Arguments in MicroStrategy are most often references to lists of values. In function
syntax, the arguments are enclosed in parentheses (). If the argument is a reference to a
MicroStrategy object, and the object name is alphanumeric or contains multiple words, it
is also contained in brackets [ ]. Depending on the function selected and the object being
created, in a MicroStrategy environment the input could comprise one or more of the
following objects:
Attributes: Attributes are most often used to group fact data. They are included in
reports to define the level of detail. Typically non-numeric, some common examples
of attributes are Year, Category, and Region.
Facts: Facts are the most commonly used input for metrics. They are numerical lists
obtained from specific columns in a fact table. Examples of facts include Units Sold,
Units Received, and Discount.
Metrics: Metrics represent calculations performed on data and can themselves be
used as input for further calculation by a function. Examples of metrics include
Percent Growth, Profit Margin, and Sell-through Percentage.
Columns: Column data is used when creating attribute form expressions and fact
expressions. The expressions for these objects define how column data is retrieved
from the warehouse. Examples of columns include TOT_DOLLAR_SALES, TOT_
COST, and CUST_CITY_ID.

For an in-depth discussion of attributes, facts, and metrics,see the Advanced


Reporting Guide.

Using prompts for arguments


Prompts can be used to provide the value for an argument in a function, which allows a
user to determine part of the function definition when a report is executed. Arguments
that expect a single value are the most common arguments to use prompts on. For
example, the function NTileSize (see NTileSize, page 207) has the following syntax:
NTileSize <Ascending, BreakBy> (Argument, Size)
The two arguments for this syntax are:
Argument is a metric representing a list of values to be distributed in buckets.

38 2017, MicroStrategy Inc.


Functions Reference

Size is a positive integer that designates the number of elements per bucket.
The argument Size is a good candidate to use a prompt for, since it expects a single
value. Using a prompt to provide the value for Size allows a user to determine how
many elements should be included in each NTile bucket. This is a more flexible reporting
solution than defining a static value for the argument that is always used for the
calculation.
To include a prompt in a function expression, you can use the following syntax:
?[Prompt Name]
The Prompt Name is the name of the prompt object. For example, you can have the
following definition:
NTileSize([Total Revenue], ?[NTileValue Prompt])
In the syntax shown above, NTileValue Prompt is the name of a value prompt that
supplies the size for the NTileSize function.

When prompts are created, you can choose whether answering the prompt is
optional or required. Since arguments are required for a function to work properly,
it is a good practice to define prompt answers as required if the prompt is going to
be used in a function expression.

Many of the financial functions (see Financial functions, page 261) use arguments that
expect a single value, and thus are good candidates for using functions to provide their
values. For example, the function Coupdays (see Coupdays (coupon period, number of
days with settlement), page 267) includes a Frequency argument which can accept the
value of 1, 2, or 4 to determine the number of coupon payments per year. You could use a
value prompt for the Frequency argument to prompt the user to enter the frequency of
the coupon payments.

Using functions in expressions


Functions are the basis for many MicroStrategy objects. Some of the objects they are
used to create includes:
Metric expressions
Attribute form expressions
Consolidation expressions
Custom group expressions
Fact expressions
Filter expressions
Subtotal expressions
Transformation expressions
Derived elements

2017, MicroStrategy Inc. 39


Functions Reference

Derived attributes
This section explores the various roles of functions for each type of object and how to
access the expression builder in each case.

Metric expressions
Metrics are MicroStrategy objects that represent calculations performed on data. You can
define metrics by using the available functions to analyze your data and determine
business measures.
Formula and dimensionality are the two important components in a metric. While all
metrics have a formula, not all of them have dimensionality.
Formula: Is a mathematical expression using one or more functions, applied to the
data to be used in the calculation (facts, attributes, constants, or metrics). In SQL,
the formula commonly becomes part of the SELECT clause of the SQL command.
You can re-use the same formula in multiple metric definitions. This type of formula
is called a base formula, which can contain arithmetic operators, attributes, facts,
group functions, and non-group functions. A base formula does not have
dimensionality (see below). For more information on base formulas, see the Basic
Reporting Guide.
Dimensionality: determines the attribute level at which a metric is calculated.
After deciding on the target (the attribute), in dimensionality you can further define
filtering and grouping involved in the metric. All metrics, by default, calculate at the
report level.
Other optional components of a metric include condition (filter) and transformation. For
the purposes of this book, we only discuss formula and dimensionality related to the use
of functions. For information on all metric components, including additional
information and examples of level metrics, conditional metrics, and transformation
metrics, see the Advanced Reporting Guide.
There are two types of metrics:
Simple metric: has a formula and dimensionality (level). It can stand alone or be
used as a building block for a compound metric. A simple metric must use at least
one group-value function, such as Sum or Avg. It can also contain a non-group
function or arithmetic operator, in addition to the required group function, for
example, Sum(Revenue - Cost){~+}; however, the outermost formula must be
a group function.
Compound metric: is a combination of expressions that, through the use of
functions, are themselves metrics. In other words, a compound metric is made of
more than one complete metric. Any metric that is not a simple metric is a
compound metric by default. For example, all arithmetic functions that are used as
the root to connect two metrics yield compound metrics.
A compound metric cannot have dimensionality placed on the entire metric,
although dimensionality can be set separately on each of its component metrics.

40 2017, MicroStrategy Inc.


Functions Reference

A quick way to check whether a metric is simple or compound is through the


Metric Editor, where you can click the Subtotals/Aggregation tab and check if the
Allow Smart Metric option is enabled. If it is, then it is a compound metric; if not,
it is a simple metric.

The following three types of functions can be used to build simple and compound
metrics:
Single-value functions
Group-value functions
OLAP functions

The optional condition (filter) component of a metric can contain logical and
comparison operators. See the Filter Expressions subsection for details.

While the single-value and group-value functions are used to create both simple and
compound metrics under different circumstances (see examples to follow), the OLAP
functions always yield compound metrics, due to their unique characteristics (see OLAP
(Relative) functions, page 25).

Examples of dimensionality in metrics


As mentioned previously, all metrics have a formula, but not all metrics have
dimensionality. The following examples and diagrams illustrate the formation of simple
and compound metrics, as well as formula and dimensionality.

Example 1: Simple metric with dimensionality at the report level


Avg(Revenue) {~+}

In this example, the expression is Avg on the fact Revenue. Together they make up the
base formula. This simple aggregation metric has dimensionality, which is indicated by
{~+}, meaning that the metric is calculated at the lowest level on the report. For
example, if a report contains revenue by year and month, the numbers are calculated to
reflect monthly sales data. If month was removed from the report, the metric would
automatically be calculated at the new report level, which would reflect yearly sales data.

2017, MicroStrategy Inc. 41


Functions Reference

All group-value functions are aggregation functions, which, when used alone, yield
simple metrics.

Example 2: Simple metric with dimensionality at Year level


Sum(Cost) {~ +,year +}

In this example, the expression is Sum on the fact Cost. Together they make up the base
formula. This simple aggregation metric has dimensionality. However, unlike in Example
1, dimensionality is set at the level of the attribute Year, indicated by {Year +}. This
means that if a report contains cost by year and month, the numbers are calculated to
reflect yearly cost data.

42 2017, MicroStrategy Inc.


Functions Reference

Example 3: Dimensionality for compound metrics


Avg(Revenue){~ +}/ Sum(Revenue) {~ +}

Dimensionality of compound metrics is defined by the other metric definitions that are
combined to create a compound metric. In this example, the root Division (/) has two
children, Avg(Revenue) and Sum(Revenue), both of which are simple metrics
themselves, and each of which has its own dimensionality. The whole expression itself is

2017, MicroStrategy Inc. 43


Functions Reference

a compound metric because it uses two metrics and does not have its own
dimensionality.

Accessing metric functions


You can access functions to create metrics in several ways. You can use the Metric Editor
when creating a new metric in a project. To create a derived metric, which is a metric
based on the existing data in a report, use the options from within a report to insert a
new metric.

You can also create metrics in Command Manager. For more information on this
method, see the Advanced Reporting Guide.

Metric Editor
The Metric Editor is used to create new metrics and edit existing metrics in
MicroStrategy. The interface allows you to build metric expressions and validate them.

To access the Metric Editor using Developer

1 Log in to a project.
2 In the MicroStrategy Developer File menu, point to New and then select Metric.
The New Metric dialog box is displayed.
3 Choose a Metric template and click OK to proceed. The Metric Editor displays.
4 Build the metric expression, accessing the functions in one of the following ways:
Expand the Functions and Operators folder using the drop-down list or
shortcut list in the Object Browser pane. Then expand the Functions,
Operators, or Plug-In Packages folder to access the various categories of
functions and operators.
Click (Insert Function) in the Definition pane. The Insert Function wizard
opens.
Type the function name and all required metric syntax directly in the Enter
your formula here box.

You can also edit existing metrics by using the Metric Editor. To access the editor,
select the appropriate metric in the folder list, object browser, or report view. Then
right-click and select Edit from the shortcut menu. The Metric Editor opens with
the selected metric loaded.

To access the Metric Editor using Web

1 Log in to a project.

44 2017, MicroStrategy Inc.


Functions Reference

2 From the MicroStrategy Web home page, click Create Metric.


3 In the pane below, select the function to use to calculate data in the metric. You can
narrow the list of functions displayed in the pane by doing one of the following:
To search for the function by name, type the function's name in the search field.
Choose a function category from the drop-down list, such as Math Functions or
Financial Functions. The pane is updated to include only the functions that
belong to the selected category.
4 The Function Editor opens, with different options available depending on the type of
function you selected above:
If you selected a grouping function, such as Sum, Average, First, or Maximum,
you are presented with options to define the metric's expression, as well as
optional components such as the level, condition, and transformation. Perform
the following steps:
a Define the metric's expression by doing one of the following:
To specify the expression by typing the name of an object, type the name
of the object in the Expression field. As you type, matching objects are
displayed in a drop-down list. You can click an object or continue to
type. You can type multiple objects, such as Revenue-Profit.
To specify the expression by choosing an object, click the Browse icon.
The Select an Object dialog box opens. Navigate to and select an object,
or search for the object.
b You can further define the metric by adding a level, condition, and
transformation.
If you selected a non-grouping function, such as data mining, date, OLAP, and
ranking functions, you are presented with options to define the input values
(called arguments) for the function, as well as any parameters you can use to
determine the behavior of the function. For example, the NTile function has two
parameters, Ascending and Tiles. Ascending controls whether the NTiles are
ordered in ascending or descending order, while Tiles sets the number of splits.
To view a list of the arguments and parameters for the function, click Details at
the bottom of the dialog box.
Perform the following steps:
a For each argument listed, type a value or click the Browse icon to find the
metric, fact, prompt, or other compatible object to use as input values of the
function.
b For each parameter listed, type a value or select the parameter value from
the drop-down
5 Click Save to save your changes. For additional steps to define metrics using Web,
see the MicroStrategy Web Help .

2017, MicroStrategy Inc. 45


Functions Reference

Creating derived metrics


You create derived metrics based on objects already present in the report.

To create derived metrics

1 Log in to the project.


2 Begin to create the derived metric:
Using Developer, from the Insert menu in the Report Editor, select New
Metric. Or, right-click above a metric heading in the Report Grid, point to
Insert, and then select New Metric in the shortcut menu. The Input Metric
Formula dialog box is displayed.
Using MicroStrategy Web from the Data menu in the Report Editor, select
Insert New Metric. The Metric Editor is displayed.
3 Build a metric using the available report objects.

Attribute form expressions


Attribute forms are identifiers or descriptors of an attribute, such as ID, Name, and
Address. These units are part of an attribute, for example, Customer. Attribute forms are
defined by at least one expression, and these expressions act on column data and can
contain functions. The types of attribute form expressions are as follows:
Simple
Implicit
Derived
Heterogeneous
For more information on these types of attribute forms, see the Advanced Reporting
Guide.
In the context of MicroStrategy functions, this book discusses derived expressions. A
derived expression can only use single-value functions, and arguments that are used in
the expression are columns. See the examples described below.

Example 1: Subtraction ( - )
(Year(CurrentDate()) - Year([HIRE_DATE]))
The attribute form Employee Experience is defined by the above expression using the
simple mathematical operator, subtraction.
This example can be found in the MicroStrategy Tutorial project in the following folder:
MicroStrategy Tutorial/Schema Objects/Attributes/Geography.

46 2017, MicroStrategy Inc.


Functions Reference

Example 2: InitCap
InitCap([CUST_LAST_NAME])
Text data is typically in all upper-case or all lower-case letters. This example shows that
for the attribute form of customers last name, you can use the single-value function,
InitCap, to make the first letter capitalized and all other letters in lower case.

Example 3: ApplySimple
ApplySimple("Datediff(YY,#0,getdate())", [BIRTH_DATE])
The attribute form, Age, can be defined by using the single-value function, ApplySimple.

Note the following:

For all Apply functions, do not use a group for the attribute form expression. Use
a single form because form groups are ignored by the Analytical Engine. For
example, you cannot use Customer@Name, where Name is a form group defined
as the customers first name, middle name, and last name.
The syntax of apply functions is database-specific. For more information, see
Internal functions, page 133.

To access attribute form expressions

For a new attribute


1 From the MicroStrategy Developer File menu, point to New and then select
Attribute. The Attribute Editor opens three dialog boxes, if the cascading dialog box
option is enabled in the Developer Preference (as it is by default). The three dialog
boxes are New Attribute, Create New Attribute Form, and Create New Attribute
Form Expression. The Create New Attribute Form Expression dialog box is where
functions and operators are used.
2 Build your expression by using the functions in one of the following ways:

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.
Type the function name and all required expression syntax directly in the Enter
your formula here box.

For an existing attribute


1 To access the editor, select the appropriate attribute in the folder list, object browser,
or report view. Then right-click and select Edit from the shortcut menu. The
Attribute Editor opens.

2017, MicroStrategy Inc. 47


Functions Reference

2 Select the attribute form you wish to edit from the Attribute Forms pane and then
click Modify. The Modify Attribute Form dialog box displays.

To add a new form to the existing Attribute, click New. This automatically
opens the New Attribute Form Expression dialog box.

3 Select the expression you want to edit and click Modify.

To add a new expression to the existing form, click New. This automatically
opens the New Attribute Form Expression dialog box.

4 The Modify Attribute Form Expression dialog displays with the selected expression
loaded.
5 Create or edit the expression, accessing the functions in one of the following ways:

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.
Type/edit the function name and all required expression syntax in the Enter
your formula here box.

Consolidation element expressions


Consolidations enable you to group attribute elements for use in a report, without
changing the structure of your metadata or your warehouse definition. The elements
contained in a consolidation are called consolidation elements (CEs). Only single-value
functions can be used in the definition of a consolidation element as well as calculations
between consolidation elements. A consolidation element expression defines how the
attribute elements are calculated.
Only the basic mathematical operators (+, -, *, /) can be used through MicroStrategy
Developer to define consolidation elements. Examples of consolidations, using these
operators, are as follows:
CE01 = {Region = North-East}
CE02 = {Region = Mid-Atlantic}
CE03 = ({CE01} {CE02})/{CE02}
Other single-value functions can also be used for consolidation elements, but only
through the SDK.
The following examples demonstrate definitions using functions and calculations:
CE04 = Ln({Region = North-East})
CE05 = Ln({Region = Mid-Atlantic})
CE06 = Abs({CE04} {CE05})

For more information on consolidations, see the MicroStrategy Advanced


Reporting Guide.

48 2017, MicroStrategy Inc.


Functions Reference

To access the consolidation element expressions

1 In the MicroStrategy Developer File menu, point to New and then select
Consolidation. The Consolidation Editor opens.
2 Double-click Click here to add new consolidation element.
3 The New Consolidation Element pane is enabled, in the lower right corner of the
editor. Build the expression for the new element.

You must drag and drop attributes into the Enter your expression here
box. Only the operators can be typed directly in the box.

Custom Group expressions


A custom group is an object that can be placed on a template and is made up of a
collection of elements called custom group elements. A custom group can group attribute
elements in a way that is not defined in the data warehouse. You can create relationships
between the attribute and the custom group. A custom group expression defines how the
elements in the custom group are calculated.
A custom group can organize attribute elements through:
Attribute qualification
Set qualification
A report
A filter
Banding
Advanced qualification

For more information on custom groups, see Custom Groups and Consolidations
in the MicroStrategy Advanced Reporting Guide.

When you define custom group elements through advanced qualification, you can use
two types of functions:
Logical functions
Comparison functions
See the following examples.

Example 1: Subtraction ( - )
([Unit_Profit] - [Unit_Cost]) > 500

2017, MicroStrategy Inc. 49


Functions Reference

Example 2: And
([Units Sold] > 500) and ([Unit Profit] > 1000)

To access the custom group element expressions

1 In the MicroStrategy Developer File menu, point to New and then select Custom
Group. The Custom Group Editor opens.
2 Double-click Double-click here or drag an object from the object browser
to add a custom group element.
3 Provide a name for the new element and double-click Add Qualification.
4 In the Custom Group Options pane, select Add an Advanced qualification and
click OK.
5 The Advanced Qualification pane opens. This is where the expression is built. The
functions are accessed in one of the following ways:

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.
Type the function name and all required expression syntax directly in the Enter
your formula here box.

Fact expressions
Facts are objects created by and shared between MicroStrategy users. They relate
numeric data values from the data warehouse to the MicroStrategy reporting
environment. A fact expression defines how a fact is calculated. The fact expression is
part of the Fact Definition component of a fact structure. You can use functions to create
fact expressions, and arguments that are used in the expressions are columns.
Facts can be defined as:
Implicit
Derived
Heterogeneous

For more information on facts and fact structure, see the MicroStrategy Project
Design Guide.

In the context of MicroStrategy functions, this book discusses derived fact expressions.
Derived fact expressions can only use single-value functions, including simple arithmetic
operators (+, -, /, *). See the following two examples.

50 2017, MicroStrategy Inc.


Functions Reference

Example 1: Subtraction ( - )
([UNIT_PRICE] - [UNIT_COST])
The fact Unit Profit is defined using the table columns Unit_Price and Unit_Cost and a
simple mathematical operator, subtraction.

Example 2: Multiplication ( * )
([QTY_SOLD] * ([UNIT_PRICE] - DISCOUNT))
The fact Revenue is defined using three table columns and two arithmetic operators,
subtraction and multiplication.
Both examples can be found in the MicroStrategy Tutorial project in the following
folder: MicroStrategy Tutorial/Schema Objects/Facts.

To access fact expressions

For a new fact with an expression


1 In the MicroStrategy Developer File menu, point to New and then select Fact. The
Fact Editor opens two pages: Fact and Create New Fact Expression.
2 The Expression page is where the expression is built. The functions are accessed in
one of the following ways:

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.
Type the function name and all required expression syntax directly in the Enter
your formula here box.

For an existing fact


1 Select an existing fact in the MicroStrategy Developer main screen. Then right-click
and select Edit from the shortcut menu. The Fact Editor displays with the selected
fact loaded.
2 Click New to add a new expression to the fact, or select an existing expression and
click Modify. The Create New Fact Expression or Modify Fact Expression
page displays.
3 Build an expression by using functions in one of the following ways:

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.

2017, MicroStrategy Inc. 51


Functions Reference

Type the function name and all required expression syntax directly in the Enter
your formula here box.

You can use either the Fact Editor or the Fact Creation Wizard to create facts;
however, only the Fact Editor allows you to use advanced expressions to define the
fact.

Filter expressions
A filter specifies the conditions that data must meet to be included in the report results.
In SQL, a filter is specified after the WHERE clause. A filter can be a report object, that
is, a report filter, a report limit, or a view filter, that restricts the data returned or the
display or view of data on a report. For detailed information on report filters, see the
Advanced Reporting Guide .
A filter can also be a metric qualifier created using custom expressions employing
functions. It is used as the optional condition component of a metric. You can create this
type of filters by using the Advanced Qualification dialog box within the Filter Editor.
Only the following types of functions can be used in filter expressions:
Logical operators
Comparison operators

Single-value functions can be used at the sublevel in a filter expression, as long as


the root node is a logical or comparison function (see Example 1).

Example 1: Greater than ( > )


((Revenue - Cost) > 5000)
This example uses a simple comparison operator to create a filter to limit the display of
profit to values greater than $5,000.

You can achieve the same result by using a set (metric) qualification on a
compound metric (such as the one in the example defined as Revenue - Cost).
The custom filter expression is used here for illustration purposes. It is up to you
which method you prefer to use.

Example 2: ApplyComparison
ApplyComparison("#0 between #1 and #2", ?[Value Prompt
Date], [Order Date]@ID, [Ship Date]@ID)
ApplyComparison is commonly used to create custom filters. In this example, the filter
compares a user-entered date to see if it is between the Order_Date and the Ship_Date.

52 2017, MicroStrategy Inc.


Functions Reference

To access an advanced filter qualification

1 In the MicroStrategy Developer File menu, point to New and then select Filter. The
Filter Editor is displayed.
2 In the Filter Definition pane, double-click Double-click here to add a
qualification or drag an object from the Object Browser. The Filtering
Options pane is displayed.
3 In the Filtering Options pane, select the Add an Advanced qualification option.
Then click OK. The Advanced Qualification pane is displayed.
4 Select Custom Expression from the Option list. Then use the Custom Expression
box to build and validate your custom filter. Access the functions in one of the
following ways:
Expand the Functions and Operators folder using the drop-down list or
folder list. Then expand the Functions, Operators, or Plug-In Packages
folder to access the various categories of functions and operators.
Click (Insert Function) in the Definition pane. The Insert Function Wizard
opens.
Type the function name and all required metric syntax directly in the Enter
your formula here box.

Subtotal expressions
Subtotals allow you to dynamically control the computation and display of report data
within desired groupings. Subtotals are applied to report metrics to calculate totals and
for dynamic aggregation.
The standard predefined subtotal functions, which are automatically available for use
with every metric and report, are simple aggregate functions that satisfy many
subtotaling requirements. If they do not answer your particular needs, you can create a
user-defined subtotal using the Subtotal Editor or through the SDK. User-defined
subtotals allow you to develop your own subtotals, using single-value functions or group-
value functions.
Both predefined and user-defined subtotals can be applied to reports from the
Subtotals/Aggregation tab in the Metric Editor.

For more information on subtotals and the procedures for creating and applying
them, see the Reports chapter of the Advanced Reporting Guide or the
MicroStrategy online help.

Example: Division ( / )
Sum(Sum(x*[Units Sold]){Year}/Sum([Units Sold]){Year}){}

2017, MicroStrategy Inc. 53


Functions Reference

To access functions in the Subtotal Editor

1 Log in to a project.
2 In the MicroStrategy Developer File menu, point to New and then select Subtotal.
The Subtotal Editor displays.
3 The Subtotal Editor is very similar to the Metric Editor. To access the functions used
to create a new subtotal, you can do one of the following:
Expand the Functions and Operators folder using the drop-down list or
shortcut list in the Object Browser pane. Then expand the Functions,
Operators or Plug-In Packages folder to access the various categories of
functions and operators.

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.
Type the function name and all required subtotal syntax directly in the Enter
your formula here box.

Transformation expressions
Transformations are schema objects that use business rules to compare values at
different time periods. A typical example of this type of analysis is a TY/LY comparison
(This Year versus Last Year).

Transformations are schema objects; therefore, you must have the appropriate
privileges to create or modify them.

There are two types of transformations: expression-based and table-based. Single-value


functions can be used in expression-based transformations, and specifically in the
definition of member expressions. These expressions define how (and from where) the
information is retrieved for the transformation of the specified attribute.

For more information on transformations and their components, see the


Advanced Reporting Guide or the MicroStrategy online help.

To access functions in transformations

1 In the MicroStrategy Developer File menu, point to New and then select
Transformation. The Transformation Editor is displayed. The Select Member
Attribute dialog box also opens.
2 Select the attribute on which to base the transformation. Then click OK. The
Expression Editor opens.
3 Build an expression for the transformation of the selected member attribute,
accessing functions in one of the following ways:

54 2017, MicroStrategy Inc.


Functions Reference

Click (Insert Function) in the Definition pane. The Insert Function wizard

opens.
Type the function name and all required expression syntax directly in the Enter
your formula here box.

Adding functions to expressions with the Insert


Function Wizard
The Insert Function Wizard is available wherever functions are used. It guides you
through the process of selecting a function, choosing the data on which the function
acts, and setting the available parameters.

To build an expression using the Insert Function Wizard

For detailed information on each page of the Insert Function Wizard, see the
MicroStrategy online help and search for Using the Insert Function Wizard.

1 Click the Insert Function button to access the wizard. The Select Function

page of the Insert Function Wizard is displayed.

2017, MicroStrategy Inc. 55


Functions Reference

2 Navigate through the folder structure to the function you want to use. Select the
function and click Next to continue. The Arguments page opens.

When a function is highlighted, its syntax and a short description are displayed
in the lower left corner of the window.

3 Include the arguments for your function by typing the values or names of the
arguments or by browsing for the arguments:
Type the appropriate values or name of the arguments into the available boxes.
Click (the Browse button). The Open dialog box opens, which is a standard
Windows dialog box for file selection.
Select the argument on which the function acts. Click Open to select the
argument and return to the Insert Function Wizard.
4 Click Next when you have provided all arguments. The Parameters page is displayed
(if applicable).

For group-value metrics such as Count, Min, and Max, standard parameters
(Distinct, NULL, and FactID) display together on the only page available, called
Parameters. The default for FactID is (Nothing), meaning that the calculation
searches for the input argument from the lookup table. Otherwise, make a
selection from the pull-down list to force the calculation to look in another table.

56 2017, MicroStrategy Inc.


Functions Reference

5 Set the values of the parameters.


6 Define the SortBy and BreakBy parameters in their separate windows, if applicable.
7 Click Finish. The expression built through the Insert Function Wizard displays in
the appropriate editor.

Parameter values are displayed only if you have set your view to Show
Function Parameters and have modified a parameter from its default
setting.

How MicroStrategy processes functions


MicroStrategy Intelligence Server has an engine component, which comprises the
following:
SQL Engine: Generates the SQL and associated logic for functions performed by
the database, and communicates with the Analytical Engine as necessary.
Query Engine: Sends the SQL generated by the SQL Engine to the data warehouse
for execution.
Analytical Engine: Extends the capability of the system beyond what the RDBMS
provides. For example, it performs complex calculations on a result set returned from
the data warehouse, such as statistical and financial functions, subtotal calculations
on the result set, metric calculations that are not or cannot be performed using SQL,
such as complex functions, and so on.
While this extends the capabilities of the RDBMS that you are using, calculations
that require the Analytical Engine can require additional system resources and
processing time. To determine if a function is supported by your RDBMS or will be
evaluated by the Analytical Engine, review the function support listed in Appendix A,
MicroStrategy and Database Support for Functions.

Types of function processing


Functions supported by the Intelligence Server are of three types:
Those that can be processed only by the Analytical Engine, such as finance
functions.
If the Analytical Engine does not support a given function, a compound metric
containing the function cannot be smart metric enabled. This is because smart
metrics change the default order of metric evaluation and only the Analytical Engine
can support such a change.
Those that can be processed only by the database, such as date-and-time functions.
If a database platform does not support a given function that can only be processed
by the database, that function cannot be calculated. For a list of functions supported
for each certified database type, see Appendix A, MicroStrategy and Database
Support for Functions.
Those that can be processed either by the Analytical Engine or by the database.

2017, MicroStrategy Inc. 57


Functions Reference

If the database can perform the calculation, the SQL Engine sends the instructions
to the database; otherwise, the Analytical Engine processes the task.

How Intelligence Server uses functions


Recall that there are several categories of functions recognized by Intelligence Server.
These function types include group-value, single-value, and OLAP functions. Within
these categories are functions supported by only the Analytical Engine, only the
database, or by both the engine and the database. The SQL generated to process the
request differs depending on what processes the request. The SQL syntax also differs
depending on the database used, when the database supports the function.
The following subsections explore through examples of how the various uses of functions
result in different SQL syntax. All of these examples use the functions in the context of
metrics.

Most of these examples (except where noted) can be recreated using the objects in
the MicroStrategy Tutorial. Tutorial data is stored in a Microsoft Access
database.

Using group-value functions


The computation of group-value functions is done by either the Intelligence Server or the
database depending upon the function used and support available. The following
examples discuss how MicroStrategy performs the group-value computations by
providing the SQL syntax for specific situations.

Group-value functions in simple metrics


This subsection contains two examples that illustrate the processing of group-value
functions. Each example contains two reports, the first one showing the SQL for a
function supported by the database and the second one by the Analytical Engine.

Example 1: Sum(Revenue) vs. AvgDev(Revenue)


Consider a simple report, Report 1A, where the attribute Region is placed on the row axis
and a simple metric defined as M1A=Sum(Revenue){~} is on the column axis. This
report shows the sales for each region. The database, in this case Microsoft Access,
supports the function Sum. The following SQL is generated:
Report 1A (SQL Group-value function) - Microsoft Access
select a12.[REGION_ID] AS REGION_ID,
max(a13.[REGION_NAME]) AS REGION_NAME,
sum(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [CITY_CTR_SLS] a11,
[LU_CALL_CTR] a12,
[LU_REGION] a13
where a11.[CALL_CTR_ID] = a12.[CALL_CTR_ID] and
a12.[REGION_ID] = a13.[REGION_ID]
group by a12.[REGION_ID]

58 2017, MicroStrategy Inc.


Functions Reference

Now, consider Report 1B, again with the same attribute, Region, on the row axis, but
with a different simple metric defined as M1B=AvgDev(Revenue){~} on the column
axis. This report shows how revenue data varies from its mean for each region. The
database does not support the function Average Deviation; therefore, the computation is
performed by the Analytical Engine. The following SQL is generated:
Report 1B (MicroStrategy Group-value function)
select a11.[CALL_CTR_ID] AS CALL_CTR_ID,
a11.[CUST_CITY_ID] AS CUST_CITY_ID,
a12.[REGION_ID] AS REGION_ID,
a13.[REGION_NAME] AS REGION_NAME,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [CITY_CTR_SLS] a11,
[LU_CALL_CTR] a12,
[LU_REGION] a13
where a11.[CALL_CTR_ID] = a12.[CALL_CTR_ID] and
a12.[REGION_ID] = a13.[REGION_ID]
[An analytical SQL]

In Report 1B, Intelligence Server performs the following steps:


It retrieves all fact data from the warehouse. [TOTAL_ DOLLAR_SALES] is the
column alias used for the fact (Revenue) in the temporary table during SQL
generation.
It uses the result set (that is held in memory) to compute the metric, namely
AvgDev([TOTAL_ DOLLAR_SALES]){~} for each region.

The notation [An analytical SQL] indicates that the computation is


taking place in the Analytical Engine.

It displays the final result.


In the previous examples, the dimensionality of both metrics is defined as {~}, which
means that they both are calculated at the report level of Region, since the attribute
Region is on the reports.
The next example explains how Intelligence Server processes dimensionality. When
metric dimensionality is defined, the Analytical Engine can insert records back into the
temporary database structures after the function calculation is performed so that
dimensionality can be applied.

Example 2: Sum(Revenue) {~, Country} vs. AvgDev(Revenue) {~, Country}


Now use the same report template as in Example 1, but add a dimensionality to each
metric for comparison. Use Sum(Revenue){~,Country} for Report 2A and AvgDev
(Revenue){~,Country} for Report 2B. Notice that attribute Country is a parent of
Region, and the relationship is one to many. In Report 2A, the Sum function is
supported by the database; in Report 2B, the AvgDev function is supported by
Intelligence Server. The SQL generated for both reports is as follows:

Report 2A (SQL Group-value function) - Microsoft Access


create table ZZT1Y03009ZMD000 (
COUNTRY_ID BYTE,

2017, MicroStrategy Inc. 59


Functions Reference

WJXBFS1 DOUBLE)
insert into ZZT1Y03009ZMD000
select a12.[COUNTRY_ID] AS COUNTRY_ID,
sum(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [CITY_CTR_SLS] a11,
[LU_CALL_CTR] a12
where a11.[CALL_CTR_ID] = a12.[CALL_CTR_ID]
group by a12.[COUNTRY_ID]
select a11.[REGION_ID] AS REGION_ID,
a11.[REGION_NAME] AS REGION_NAME,
pa1.[WJXBFS1] AS WJXBFS1
from [ZZT1Y03009ZMD000] pa1,
[LU_REGION] a11
where pa1.[COUNTRY_ID] = a11.[COUNTRY_ID]
drop table ZZT1Y03009ZMD000

The first pass of SQL creates a temporary table to hold the data. The second pass
computes the metric at the Country level, while the third pass joins with attribute Region
since the result of the aggregation has to be displayed for each region. The final pass
drops the temporary table.

Report 2B (MicroStrategy Group-value function)


select a11.[CUST_CITY_ID] AS CUST_CITY_ID,
a12.[COUNTRY_ID] AS COUNTRY_ID,
a11.[CALL_CTR_ID] AS CALL_CTR_ID,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [CITY_CTR_SLS] a11,
[LU_CALL_CTR] a12
where a11.[CALL_CTR_ID] = a12.[CALL_CTR_ID]
create table ZZMD00 (
COUNTRY_ID BYTE,
WJXBFS1 FLOAT)
[An analytical SQL]
insert into ZZMD00 values ([DummyInsertValue])
select a11.[REGION_ID] AS REGION_ID,
a11.[REGION_NAME] AS REGION_NAME,
pa1.[WJXBFS1] AS WJXBFS1
from [ZZMD00] pa1,
[LU_REGION] a11
where pa1.[COUNTRY_ID] = a11.[COUNTRY_ID]
drop table ZZMD00

In Report 2B, an Analytical SQL pass is necessary to compute AvgDev since it is not a
database supported group-value function. In the next pass, the results of the calculation
are inserted back into the temporary database structures. The last SQL pass is the same
as Report 2A, since it is used to display the result for all regions.

Using single-value functions


The key to understanding the computation of a single-value function is to identify the
way it is used. The next two subsections provide examples of the two uses of single-value
functions and how they are processed.
The first example shows a single-value function applied before a group-value function.
This is referred to as transforming a fact. The second example shows a single-value
function applied after the group-value function. This is referred to as a compound metric.

60 2017, MicroStrategy Inc.


Functions Reference

Each example contains two reports, the first one showing the SQL syntax when
calculations are processed by the database and the second one when calculations are
processed by the Intelligence Server.

The use of transform in this context refers to retrieving a fact in a different form.
For example, you can obtain the absolute value for a fact or the natural logarithm,
but the fact is the same. This differs from a transformation where the data
retrieved is different when a transformation is applied, for example, last years
revenue instead of this years revenue.

Transforming a fact into another fact


In this case, the fact Revenue is transformed into another fact, namely the natural
logarithm values defined as Ln(Revenue) or the truncated revenue values defined as
Trunc(Revenue).
The following example describes this type of usage and displays the SQL that is
generated.
Consider the two metrics defined as follows:
M3A = Sum(Ln(Revenue)){~+}
M3B = Sum(Trunc(Revenue)){~+}
Put M3A with Region on the template. The database, in this case, SQL Server 2000,
supports the function Ln. The following SQL is generated:

Report 3A (SQL single-value before group-value function) - SQL Server 2000


Pass0 - Duration: 0:00:40.45
select a13.REGION_ID REGION_ID,
max(a14.REGION_NAME) REGION_NAME,
sum(LOG(a11.ORDER_AMT)) WJXBFS1
from ORDER_FACT a11
join LU_EMPLOYEE a12
on (a11.EMP_ID = a12.EMP_ID)
join LU_CALL_CTR a13
on (a12.CALL_CTR_ID = a13.CALL_CTR_ID)
join LU_REGION a14
on (a13.REGION_ID = a14.REGION_ID)
group by a13.REGION_ID

Based on the SQL, this is what happened:


1 The Ln function is applied to the fact Revenue, which is defined in the warehouse by
the column ORDER_AMT.

The Ln function uses the syntax LOG in SQL Server 2000.

2 Then, the Sum function is performed on the new fact, namely Ln(Revenue).
Now, put M3B with Region on the template, the following SQL is generated:

2017, MicroStrategy Inc. 61


Functions Reference

Report 3B (MicroStrategy single-value before group-value function)


select a11.[CALL_CTR_ID] AS CALL_CTR_ID,
a11.[CUST_CITY_ID] AS CUST_CITY_ID,
a12.[REGION_ID] AS REGION_ID,
a13.[REGION_NAME] AS REGION_NAME,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [CITY_CTR_SLS] a11,
[LU_CALL_CTR] a12,
[LU_REGION] a13
where a11.[CALL_CTR_ID] = a12.[CALL_CTR_ID] and
a12.[REGION_ID] = a13.[REGION_ID]
[An Analytical SQL]

In this case, as noted by the text [An Analytical SQL], the functions Trunc and
Sum are computed by the Intelligence Server. Intelligence Server computes the new fact
Trunc([Dollar Sales]) first and then uses the Sum function to sum the new fact
for each region.

Calculating a compound metric


Single-value functions can be used to create compound metrics. Subtraction, addition,
division, and multiplication operators (, +, /, *) are common examples of single-value
functions. See the following examples:
(Sum([Dollar Sales]){~}/Sum([Dollar Sales])
{~,Country})
(Sum([Dollar Sales]){~} + Sum([Freight]) {~})
The examples below use a compound metric and a metric that transforms a fact in the
same report. The examples illustrate the SQL generated when the function is supported
by the database and the Intelligence Server, respectively.
Consider the following metric definitions:
M4A = Ln(Sum(Revenue){~})
M4B = Trunc(Sum(Revenue){~})
Put metric M3A, from the previous example, and metric M4A together with attribute
Region on the template. The database, in this case SQL Server 2000, supports the Ln
function. The following SQL is generated:

Report 4A (SQL single-value before and after group-value functions) - SQL Server
2000
Pass0 - Duration: 0:00:02.58
select a13.REGION_ID REGION_ID,
max(a14.REGION_NAME) REGION_NAME,
sum(LOG(a11.ORDER_AMT)) WJXBFS1,
LOG(sum(a11.ORDER_AMT)) WJXBFS2
from ORDER_FACT a11
join LU_EMPLOYEE a12
on (a11.EMP_ID = a12.EMP_ID)
join LU_CALL_CTR a13
on (a12.CALL_CTR_ID = a13.CALL_CTR_ID)

62 2017, MicroStrategy Inc.


Functions Reference

join LU_REGION a14


on (a13.REGION_ID = a14.REGION_ID)
group by a13.REGION_ID

To process metric M3A, the single-value function Ln is calculated before the group-value
function Sum, and for metric M4A, Ln is calculated after Sum.

The Ln function uses the syntax LOG in SQL Server 2000.

Similarly, if you put metrics M3B and M4B together with attribute Region on the
template, and the database does not support the Trunc function, then the following SQL
is generated:
Pass0 - Duration: 0:00:12.67
select a11.ORDER_DATE DAY_DATE,
a11.EMP_ID EMP_ID,
a11.ORDER_ID ORDER_ID,
a13.REGION_ID REGION_ID,
a14.REGION_NAME REGION_NAME,
a11.ORDER_AMT WJXBFS1
from ORDER_FACT a11
join LU_EMPLOYEE a12
on (a11.EMP_ID = a12.EMP_ID)
join LU_CALL_CTR a13
on (a12.CALL_CTR_ID = a13.CALL_CTR_ID)
join LU_REGION a14
on (a13.REGION_ID = a14.REGION_ID)
Pass1 - Duration: 0:00:08.46
[An Analytical SQL]

The fact, Revenue, which is defined as column ORDER_AMT in the ORDER_FACT


table, is retrieved and used to compute both metrics.

Using OLAP functions


You can better understand how Intelligence Server computes OLAP functions by
observing several examples based on the following properties:
Window size
BreakBy
SortBy
NULL handling
Tie handling
There are two examples for each subsection, comparing the SQL syntax when the
database performs the OLAP function calculations with the one when the Intelligence
Server performs the computation.

Window Size in Moving functions


For this example, define metric M1A as Sum(Revenue){~+}. Then create an OLAP
metric called OM1, that is defined as

2017, MicroStrategy Inc. 63


Functions Reference

MovingAvg <BreakBy = {Category}, SortBy = (Value)>


([M1A],5).
OM1 computes the moving average of M1A with a window size of 5. The OLAP metric is
computed after it is sorted by the value of M1A in ascending order. Moreover, the
computation restarts for every category.
Now, put the attributes Category and Item on the Row axis and the above metrics on the
Column axis. Run this report with an empty filter against a database that does not
support OLAP functions (in this case Microsoft Access), the following SQL is generated:

Report 5A (MicroStrategy OLAP function - window size) - Microsoft Access


Pass0 - Duration: 0:00:00.60
select a13.[CATEGORY_ID] AS CATEGORY_ID,
max(a14.[CATEGORY_DESC]) AS CATEGORY_DESC,
a11.[ITEM_ID] AS ITEM_ID,
max(a12.[ITEM_NAME]) AS ITEM_NAME,
sum(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [ITEM_MNTH_SLS] a11,
[LU_ITEM] a12,
[LU_SUBCATEG] a13,
[LU_CATEGORY] a14
where a11.[ITEM_ID] = a12.[ITEM_ID] and
a12.[SUBCAT_ID] = a13.[SUBCAT_ID] and
a13.[CATEGORY_ID] = a14.[CATEGORY_ID]
group by a13.[CATEGORY_ID],
a11.[ITEM_ID]
Pass1 - Duration: 0:00:00.01
[An Analytical SQL]

Alternatively, if you execute the above report against a database that does support OLAP
computations (in this case Oracle 9i), then the following SQL is generated:

Report 5B (DB OLAP function - window size) - Oracle 9i


Pass0 - Duration: 0:00:10.15
select a13.CATEGORY_ID CATEGORY_ID,
a14.CATEGORY_DESC CATEGORY_DESC,
a11.ITEM_ID ITEM_ID,
a12.ITEM_NAME ITEM_NAME,
sum((a11.QTY_SOLD * (a11.UNIT_PRICE - a11.DISCOUNT)))
WJXBFS1,
avg(sum((a11.QTY_SOLD * (a11.UNIT_PRICE -
a11.DISCOUNT)))) over(partition by a13.CATEGORY_ID
order by sum((a11.QTY_SOLD * (a11.UNIT_PRICE -
a11.DISCOUNT))) asc rows 4 preceding) WJXBFS2
from ORDER_DETAIL a11,
LU_ITEM a12,
LU_SUBCATEG a13,
LU_CATEGORY a14
where a11.ITEM_ID = a12.ITEM_ID and
a12.SUBCAT_ID = a13.SUBCAT_ID and
a13.CATEGORY_ID = a14.CATEGORY_ID
group by a13.CATEGORY_ID,
a14.CATEGORY_DESC,
a11.ITEM_ID,
a12.ITEM_NAME

64 2017, MicroStrategy Inc.


Functions Reference

The following example shows how the Intelligence Server computes OLAP functions
when the database does not support OLAP functions. The Intelligence Server retrieves all
components: the input metric, BreakBy parameter, and SortBy parameter. In the above
examples, since the SortBy parameter setting is by Value, it is sufficient to bring back just
the input metric (WJXBFS1).

BreakBy in OLAP functions


In the Intelligence Server, the BreakBy parameter is only available at the attribute level.
In other words, you can start over certain computations of OLAP functions when a part
of the metric belongs to a different attribute element.
In the previous example (window size), there is an OLAP function with Category in the
BreakBy parameter. If the Analytical Engine computes the OLAP function, Intelligence
Server must select this attribute in the select clause. If the database computes the
OLAP function, then this attribute must also be in the partition by clause.

Attributes in the BreakBy parameter of an OLAP metric are always applied,


meaning that they are always in the Select clause, and if the database computes
it, they are also in the Partition by clause. This is true whether the attribute is
on the template or not.

Run a report similar to the one for window size, deleting the attributes Category and
Item from the template and adding Subcategory. The results for metric M1A are
completely different from the previous report because if Category and Item are not on
the template, then the level of aggregation for metric M1A is replaced by Subcategory,
which is on the template. On the other hand, OLAP metric OM1 must still restart the
calculation (break by) for each Category and therefore remains in the appropriate
Select and Partition by clauses. Notice that in both the SQLs below, the
Intelligence Server always selects Category even though Category is not on the template.
For a database that does not support OLAP functions (in this case Microsoft Access), the
following SQL is generated:

Report 6A (MicroStrategy OLAP function <BreakBy>) - Microsoft Access


Pass0 - Duration: 0:00:00.63
select a11.[SUBCAT_ID] AS SUBCAT_ID,
max(a12.[SUBCAT_DESC]) AS SUBCAT_DESC,
a12.[CATEGORY_ID] AS CATEGORY_ID,
sum(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [CITY_SUBCATEG_SLS] a11,
[LU_SUBCATEG] a12
where a11.[SUBCAT_ID] = a12.[SUBCAT_ID]
group by a11.[SUBCAT_ID],
a12.[CATEGORY_ID]
Pass1 - Duration: 0:00:00.00
[An Analytical SQL]

If the database supports computation of OLAP functions (in this example Oracle), then
the following SQL is generated:

2017, MicroStrategy Inc. 65


Functions Reference

Report 6B (DB OLAP function) - Oracle


Pass0 - Duration: 0:00:09.39
select a12.SUBCAT_ID SUBCAT_ID,
a13.SUBCAT_DESC SUBCAT_DESC,
a13.CATEGORY_ID CATEGORY_ID,
sum((a11.QTY_SOLD * (a11.UNIT_PRICE - a11.DISCOUNT)))
WJXBFS1,
avg(sum((a11.QTY_SOLD * (a11.UNIT_PRICE -
a11.DISCOUNT)))) over(partition by a13.CATEGORY_ID
order by sum((a11.QTY_SOLD * (a11.UNIT_PRICE -
a11.DISCOUNT))) asc rows 4 preceding) WJXBFS2
from ORDER_DETAIL a11,
LU_ITEM a12,
LU_SUBCATEG a13
where a11.ITEM_ID = a12.ITEM_ID and
a12.SUBCAT_ID = a13.SUBCAT_ID
group by a12.SUBCAT_ID,
a13.SUBCAT_DESC,
a13.CATEGORY_ID

Sorting in OLAP functions


For OLAP functions, sorting is done before performing computations. Basically, there
are two choices for the SortBy parameter setting:
Sort by Value in Subexpression: See Reports 5B (in Report 5B (DB OLAP
function - window size) - Oracle 9i, page 64) and 6B (in Report 6B (DB OLAP
function) - Oracle , page 66) for examples. Note that if the database can perform
computation of OLAP functions, then the definition of the subexpression M1A
displays in the order by clause.
For example, the above reports contain: order by sum((a11.QTY_SOLD *
(a11.UNIT_PRICE - a11.DISCOUNT))) asc to represent the <SortBy =
Value ascending> parameter setting.
Sort by Objects: This type of sorting can use either attributes or metrics. The
following examples demonstrate the differences in processing when an attribute or
metric is used.
In this example, the OLAP metric is sorted by a normal attribute (either by ID or Desc).
Create an OLAP metric defined as:
OM2 = RunningSum<BreakBy = {[Customer Region]}, SortBy =
([Customer City]@ID asc, Customer@Name dsc)>([M1A])
Then add the attributes Customer Region and Customer, and the metric OM2 to the
template.
The metric OM2 is sorted by Customer City@ID in ascending order, then by
Customer@Name in descending order, though the attribute Customer City is not on the
template. Assume that attribute Customer is a child of the attribute Customer City, and
Customer City is a child of Customer Region.
For a database that does not support OLAP functions (in this case Microsoft Access), the
following SQL is generated:

66 2017, MicroStrategy Inc.


Functions Reference

Report 7A (MicroStrategy OLAP function <SortBy>) - Microsoft Access


select a14.[CUST_REGION_ID] AS CUST_REGION_ID,
a15.[CUST_REGION_NAME] AS CUST_REGION_NAME,
a11.[CUSTOMER_ID] AS CUSTOMER_ID,
a12.[CUST_LAST_NAME] AS CUST_LAST_NAME,
a12.[CUST_FIRST_NAME] AS CUST_FIRST_NAME,
a12.[CUST_CITY_ID] AS CUST_CITY_ID,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [CUSTOMER_SLS] a11,
[LU_CUSTOMER] a12,
[LU_CUST_CITY] a13,
[LU_CUST_STATE] a14,
[LU_CUST_REGION] a15
where a11.[CUSTOMER_ID] = a12.[CUSTOMER_ID] and
a12.[CUST_CITY_ID] = a13.[CUST_CITY_ID] and
a13.[CUST_STATE_ID] = a14.[CUST_STATE_ID] and
a14.[CUST_REGION_ID] = a15.[CUST_REGION_ID]
[An Analytical SQL]

If the database supports computation of OLAP functions (in this example Oracle 9i), the
following SQL is generated:

Report 7B (DB OLAP function <SortBy>) - Oracle


Pass0 - Duration: 0:00:15.00
select a15.CUST_REGION_ID CUST_REGION_ID,
a16.CUST_REGION_NAME CUST_REGION_NAME,
a12.CUSTOMER_ID CUSTOMER_ID,
a13.CUST_LAST_NAME CUST_LAST_NAME,
a13.CUST_FIRST_NAME CUST_FIRST_NAME,
a13.CUST_CITY_ID CUST_CITY_ID,
sum(sum(a11.ORDER_AMT)) over(partition by
a15.CUST_REGION_ID order by a13.CUST_CITY_ID asc,
a13.CUST_LAST_NAME desc, a13.CUST_FIRST_NAME desc rows
unbounded preceding) WJXBFS1
from ORDER_FACT a11,
LU_ORDER a12,
LU_CUSTOMER a13,
LU_CUST_CITY a14,
LU_CUST_STATE a15,
LU_CUST_REGION a16
where a11.ORDER_ID = a12.ORDER_ID and
a12.CUSTOMER_ID = a13.CUSTOMER_ID and
a13.CUST_CITY_ID = a14.CUST_CITY_ID and
a14.CUST_STATE_ID = a15.CUST_STATE_ID and
a15.CUST_REGION_ID = a16.CUST_REGION_ID
group by a15.CUST_REGION_ID,
a16.CUST_REGION_NAME,
a12.CUSTOMER_ID,
a13.CUST_LAST_NAME,
a13.CUST_FIRST_NAME,
a13.CUST_CITY_ID

In both SQLs, the Intelligence Server selects a13.CUST_CITY_ID, even though attribute
Customer City is not on the report. In Report 7B, this attribute is also in the group by
clause. Sort by attribute Customer City@ID is done because of attribute Customer that is
a child of Customer City.

2017, MicroStrategy Inc. 67


Functions Reference

In Report 7B, the SQL has to issue group by CUST_LAST_NAME and CUST_FIRST_
NAME due to the sort by Customer@Name. For optimization purposes, the Intelligence
Server only groups by the ID column.

There is a VLDB setting that allows you to group by non-ID columns. This VLDB
setting can be set for any report that uses an OLAP metric with a sort by attribute
description.

In this example, an OLAP metric is sorted by an attribute and a metric.


Create an OLAP metric defined as:
OM3 = RunningSum<BreakBy = {[Customer Region]}, SortBy =
(Customer@[Last Name] desc, [M1A] asc)>([M1A])
Then add attributes Customer Region and Customer, and metric OM3 to the template.
The OLAP metric OM3 is sorted by Customer Last Name and then by the metric [M1A].
For databases that do not support OLAP functions (in this case Microsoft Access), the
following SQL is generated:

Report 8A (MicroStrategy OLAP function <SortBy>) - Microsoft Access


Pass0 - Duration: 0:00:00.47
select a14.[CUST_REGION_ID] AS CUST_REGION_ID,
a15.[CUST_REGION_NAME] AS CUST_REGION_NAME,
a11.[CUSTOMER_ID] AS CUSTOMER_ID,
a12.[CUST_LAST_NAME] AS CUST_LAST_NAME,
a12.[CUST_FIRST_NAME] AS CUST_FIRST_NAME,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [CUSTOMER_SLS] a11,
[LU_CUSTOMER] a12,
[LU_CUST_CITY] a13,
[LU_CUST_STATE] a14,
[LU_CUST_REGION] a15
where a11.[CUSTOMER_ID] = a12.[CUSTOMER_ID] and
a12.[CUST_CITY_ID] = a13.[CUST_CITY_ID] and
a13.[CUST_STATE_ID] = a14.[CUST_STATE_ID] and
a14.[CUST_REGION_ID] = a15.[CUST_REGION_ID] and
a14.[CUST_REGION_ID] in (3, 7)
Pass1 - Duration: 0:00:00.06
[An Analytical SQL]

If the database supports computation of OLAP functions (in this example Oracle), the
following SQL is generated:

Report 8B (DB OLAP function <SortBy>) - Oracle


select a15.CUST_REGION_ID CUST_REGION_ID,
a16.CUST_REGION_NAME CUST_REGION_NAME,
a12.CUSTOMER_ID CUSTOMER_ID,
a13.CUST_LAST_NAME CUST_LAST_NAME,
a13.CUST_FIRST_NAME CUST_FIRST_NAME,
sum(a11.ORDER_AMT) WJXBFS1,
sum(sum(a11.ORDER_AMT)) over(partition by
a15.CUST_REGION_ID order by a13.CUST_LAST_NAME desc,
sum(a11.ORDER_AMT) desc rows unbounded preceding)
WJXBFS2

68 2017, MicroStrategy Inc.


Functions Reference

from ORDER_FACT a11,


LU_ORDER a12,
LU_CUSTOMER a13,
LU_CUST_CITY a14,
LU_CUST_STATE a15,
LU_CUST_REGION a16
where a11.ORDER_ID = a12.ORDER_ID and
a12.CUSTOMER_ID = a13.CUSTOMER_ID and
a13.CUST_CITY_ID = a14.CUST_CITY_ID and
a14.CUST_STATE_ID = a15.CUST_STATE_ID and
a15.CUST_REGION_ID = a16.CUST_REGION_ID
and a15.CUST_REGION_ID in (7, 3)
group by a15.CUST_REGION_ID,
a16.CUST_REGION_NAME,
a12.CUSTOMER_ID,
a13.CUST_LAST_NAME,
a13.CUST_FIRST_NAME

NULL handling in OLAP functions


When sorted by Intelligence Server, NULL is placed at the end of a list. Databases also
put NULL at the end, as required by the ANSI standard.
For RunningCount or MovingCount functions, NULL is always ignored. For other
computations, such as RunningSum or MovingAvg, NULL is treated as zero for the sum
of values across the function parameters. This behavior is consistent for Intelligence
Server and ANSI-compliant database OLAP functions.

Tie handling in OLAP functions


Tie Handling is related to the SortBy parameter when you sort a tie in a metric.
Intelligence Server uses a Merge-Sort algorithm, which always preserves the original
order retrieved from the database (via ODBC) to the Intelligence Server.
It is not known whether databases use the same sort algorithm; therefore, the
Intelligence Server and database computation of OLAP functions can produce different
results whenever there is a tie on the data.

Using custom plug-in functions


Function Plug-Ins in the MicroStrategy Engine allow users to define their own collection
of functions, and then let the Engine use them for further analysis. The plug-in
functions, usually called user-defined functions, behave as if they are an integrated part
of MicroStrategy and are indistinguishable from all other MicroStrategy functions or
operators, such as Sum, Average, Min, Max, Count, -, +, /, or *. The Intelligence Server
performs standard computations such as Sum, Average, +, /, and so on that are usually
calculated by the database.
MicroStrategy is equipped with approximately 250 functions and operators, including
predefined plug-in functions created by MicroStrategy. They are intended to provide
three full-featured libraries of functions that are most commonly used by customers,
which includes financial functions, math functions, and statistical functions. Examples
include Accrint, IRR, NPV, Abs, Ln, Log, AvgDev, HomoscedasticTTest, Confidence, and

2017, MicroStrategy Inc. 69


Functions Reference

so on. These functions are located at ...Schema Objects/Functions and


Operators/Plug-In Packages.

For detailed information on individual functions, see Chapter 4, Plug-In Package


Functions and the Function Plug-in Wizard online help.

Creating user-defined plug-in functions


Using the MicroStrategy Function Plug-In Wizard, you can define custom functions
relevant to your business case scenarios. You can create individual functions or even
entire function packages, such as the financial, mathematical, and statistical packages,
provided by MicroStrategy. Guided by the wizard, you start by creating a Microsoft Visual
C++ project with placeholders where you can add custom analytic code. After the new
plug-in function is created, you need to launch MicroStrategy Developer to import it so it
can be used for all the reports. As mentioned previously, once a function is imported, it
will be used in the same way as any other standard MicroStrategy function.

For instructions on creating a plug-in function, see the Function Plug-in Wizard
online help.

The main stages of the creation process are described as follows:


Designing: determines how to implement the analytical procedures into a computer
algorithm.
Creating: creates the Microsoft Visual C++ project, which is used to build a library
containing your algorithms.
Implementing: creates the code that embodies the algorithms and compiling this
code into a library that is used by MicroStrategy.
Importing: adds the library to a MicroStrategy project so that its algorithms are
available for use in the project.
Executing: creates new metrics that use the algorithms and using those metrics in a
MicroStrategy report.
You can create the following types of functions:
Single-value functions
Group-value functions
OLAP functions
The datatypes of input arguments can be:
Numeric
Date
String
A plug-in function can contain more than one parameter. Supported datatypes for
parameters include:

70 2017, MicroStrategy Inc.


Functions Reference

Byte
Short
Long
Float
Double
String (BSTR)
Bool
Date
The following two examples illustrate how plug-in functions could be defined:
FORECAST<n>(numeric_vector1) = numeric1
Aggregate function with a numeric vector as an input argument and a numeric
scalar as an output argument.
One parameter, n, which is a long integer.
Given a series of values, and given that those values are each separated by one
time interval, this function predicts what the value will be after n additional time
intervals.
For example, you include the unit cost of an item in order to predict how much the
unit cost will be two years later.
FORECAST<2>(UnitCost)
In this example, UnitCost includes a four year history of data, providing the
following yearly values to the FORECAST function.
FORECAST<2>(100,120,140,160)
This results in a value of 200, which is the predicted unit cost two years from the
time of the most recently recorded cost data.
CUSTOMNUMBERFORMAT(numeric1) = string1
Simple function with numeric scalar as input argument and string scalar as
output argument.
No parameters.
Transforms a number into a string representation of that number not supported
by any of MicroStrategy's out-of-the-box metric format strings.
Example: CUSTOMNUMBERFORMAT(123456789) = '1 2345.6789'

To install the Function Plug-In Wizard

1 From ...\MicroStrategy\Desktop, click FPWizard.exe.

2017, MicroStrategy Inc. 71


Functions Reference

2 Follow the prompts to install.

To activate the Function Plug-In Wizard

1 From the Start button, select Programs, then Microsoft Visual Studio, and
then Microsoft Visual C++. The InstallShield window is displayed.
2 From the File menu, select New. The New window is displayed.
3 On the Projects tab, select MicroStrategy Function Plug-in Wizard.
4 Provide a name in the Project Name text box.

Do not use spaces in the project name. Because the project name will become
the name of the library, use something short and descriptive. For illustration
purposes, the project name myFP is used throughout the online help.

5 Change the location of the project, if needed. Then click OK. The Function Plug-in
Wizard - Step 1 of 2 window is displayed.
6 Click Help for the Function Plug-in Wizard online help whenever needed.

To access the Function Plug-in Wizard online help from the


MicroStrategy online help

1 In the master MicroStrategy online help, search for custom functions, or open
the Creating and Modifying Additional Report Objects folder, expand the
Metrics folder, and then expand the Using custom functions folder.
2 Launch the Using custom functions topic. This topic contains a link to the
Function Plug-in Wizard online help.
3 Click the Function Plug-in Wizard on-line help link. The Function Plug-in
Wizard online help opens in a new help window.

Additional examples of functions in expressions


Hypothesis Testing example
The reports and report objects in this example can be found in the following folder:
MicroStrategy Tutorial\Public Objects\Reports\
MicroStrategy Platform Capabilities\Advanced Analytics\
Statistics and Forecasting\Hypothesis Testing

72 2017, MicroStrategy Inc.


Functions Reference

Which call centers had a statistically


significant increase in the average daily sales
in recent years?
To answer this question, you must first find the average of daily sales for recent years for
each call center. You accomplish this using the Average Daily Sales metric, defined as:
Average Daily Sales = Avg(Sum(Revenue) {~+, Day+} ) {~+}
This is a simple metric that contains the nested group-value functions Sum and Avg.
Next, create a report that uses this metric, placing the Call Center attribute on the row
axis and the Year attribute on the column axis. A report with this definition is shown
below.

In this report it looks like all call centers had a significant increase in the average daily
sales in each successive year. However, an average value by itself does not represent the
complete picture.
To get more information, you can check the standard deviation of daily sales between
each successive year for each call center. You can accomplish this by adding Standard
Deviation in Daily Sales to the report. The metric is defined as:
StDev Daily Sales = Stdev(Sum(Revenue) {~+, Day+} ) {~+}

In statistics, standard deviation is a value which shows how widely a set of values
differs from the mean.

The resulting report provides the average and the standard deviation of daily sales for all
years, for each call center.

2017, MicroStrategy Inc. 73


Functions Reference

This report shows that all call centers have greater average daily sales in each successive
year. Additionally, the standard deviation of daily sales is higher for each successive year,
with a number of exceptions. A couple of these exceptions include Atlanta between 2009
and 2010, as well as San Francisco between 2008 and 2009. The higher standard
deviation values mean that there is more volatility in these results. Therefore, the higher
average daily sales in each successive year are not necessarily a progressive increase over
previous years; they may have been caused by random fluctuations.
Based on this observation, you next need to find out which call centers have a
statistically significant difference in their average daily sales between these successive
years. You can get the result by testing the hypothesis that the average daily sales are the
same, against the hypothesis that the average daily sales are significantly different. This
must be tested for each call center.
The hypothesis testing is accomplished by computing the p-value. In statistics, p-value is
the probability of making a decision to reject a fact, given that the fact is correct. In the
context of this example, it is the probability of making a mistake by concluding that the
average daily sales in 2008 is significantly different from 2009, given that actually they
are about the same. In general, you want to restrict this type of error so that it is smaller
than a certain tolerance level. This tolerance level is usually set to between 2.5% to
10.0%.
If you assume that the standard deviations of daily sales for all years are the same, then
you can use a function called HomoscedasticTTest to compute the p-value. If you assume
that the daily standard deviations are different, then you must use the function
HeteroscedasticTTest. The following examples consider both of these assumptions and
compute the p-value using HomoscedasticTTest and HeteroscedasticTTest.
This report uses simple metrics based on other metrics, because to calculate the p-value,
you need to compute the daily sales for each call center for each day. You also need to
group the fact Revenue at the levels of Day and Call Center for all years. The fact table
DAY_CTR_SLS is available at the levels of Employee, Order, and Day.

74 2017, MicroStrategy Inc.


Functions Reference

Call Center is related to the fact table via Employee.

You need a table with a structure similar to the following:

Call Center Day Daily Sales (last Daily Sales (current


year) year)

Northwest 1 123456 123456


... 123456 123456
N 123456 123456
Southeast 1 123456 123456
... 123456 123456
N 123456 123456

You need to create a temporary table with this structure using metrics. These metrics are
then used in simple metrics to calculate the p-value.
Follow the steps below to build the necessary metrics for the Hypothesis Testing report.
1 Build a metric to create the column for [Daily Sales (current year)] in the temporary
table. This metric is defined as:
Daily Sales (current year)= Sum(Revenue) {~+, Day+} <
[Current year in sample DB]; @2; ->
The default level notation {~+} is placed on the metric since the default is to group
by an attribute on the report. In this example, that report attribute is Call Center.
The metric condition Current year in sample DB is also applied to calculate
the data for the current year available in the MicroStrategy Tutorial data.
2 Build a metric to create the column for [Daily Sales (last year)] in the temporary
table. This metric is defined as:
Daily Sales (last year) = Sum(Revenue) {~+, Day+} <
[Last year in sample DB]; @2; -> | [Last Year's] |
This metric uses a metric condition and a transformation.
The metric condition Last year in sample DB is applied to calculate the
data for the previous year available in the MicroStrategy Tutorial data.
The transformation Last Year's is necessary because attribute Day is a child
of attribute Year. To show Daily Sales in Day 1, 2, , N of last year together with
Daily Sales in Day 1, 2, , N of the current year, you must use the
transformation to supply this data.
3 Build the simple metrics to compute the p-value for each call center by using the
metrics above. The simple metrics are defined as follows:

2017, MicroStrategy Inc. 75


Functions Reference

HeteroscedasticTTest([Daily Sales (last year)], [Daily


Sales (current year)]) {~+}
HeteroscedasticTTest([Daily Sales (last year)], [Daily
Sales (current year)]) {~+}
Create a report with the two metrics shown above (for p-value) and the attribute Call
Center. The Hypothesis Testing report is shown below.

The resulting report, Hypothesis Testing, is shown above. All call centers, except for
Atlanta, Salt Lake City, Seattle, and Fargo, have a p-value of less that 5%. This indicates
that the probability of making an error in concluding that the sales have significantly
increased is low for all but these four call centers. Additionally, even Salt Lake City and
Fargo are at 20% or lower. This is strong evidence that average daily sales for the
majority of the call centers can be attributed to a steady increase, rather than random
fluctuations.
The SQL generated for the report Hypothesis Testing is displayed below, along with a
summary of the actions taken at the end of the SQL statement:
Pass0 - Execution Duration:0:00:00.06
create table ZZTH0FDXLS4MD000 (
DAY_DATE TIMESTAMP,
CALL_CTR_ID SHORT,
WJXBFS1 DOUBLE)
Pass1 - Execution Duration:0:00:00.34
insert into ZZTH0FDXLS4MD000
select a12.[DAY_DATE] AS DAY_DATE,
a11.[CALL_CTR_ID] AS CALL_CTR_ID,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [DAY_CTR_SLS] a11,
[LU_DAY] a12
where a11.[DAY_DATE] = a12.[LY_DAY_DATE]
and a12.[YEAR_ID] in (2010)
Pass2 - Execution Duration: 0:00:00.00
create table ZZTU1RY0YSKMD001 (
DAY_DATE TIMESTAMP,
CALL_CTR_ID SHORT,
WJXBFS1 DOUBLE)

76 2017, MicroStrategy Inc.


Functions Reference

Pass3 - Execution Duration: 0:00:00.03


insert into ZZTU1RY0YSKMD001
select a11.[DAY_DATE] AS DAY_DATE,
a11.[CALL_CTR_ID] AS CALL_CTR_ID,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [DAY_CTR_SLS] a11,
[LU_DAY] a12
where a11.[DAY_DATE] = a12.[DAY_DATE]
and a12.[YEAR_ID] in (2010)
Pass4 - Execution Duration: 0:00:00.07
select pa11.[CALL_CTR_ID] AS CALL_CTR_ID,
a13.[CENTER_NAME] AS CENTER_NAME,
pa11.[DAY_DATE] AS DAY_DATE,
pa11.[WJXBFS1] AS WJXBFS1,
pa12.[WJXBFS1] AS WJXBFS2
from [ZZTH0FDXLS4MD000] pa11,
[ZZTU1RY0YSKMD001] pa12,
[LU_CALL_CTR] a13
where pa11.[CALL_CTR_ID] = pa12.[CALL_CTR_ID] and
pa11.[DAY_DATE] = pa12.[DAY_DATE] and
pa11.[CALL_CTR_ID] = a13.[CALL_CTR_ID]
Pass5 - Execution Duration: 0:00:00.00
[Analytical SQL calculated by the Analytical Engine:
select CALL_CTR_ID,
CENTER_NAME,
HomoscedasticTTest(WJXBFS1, WJXBFS2),
HeteroscedasticTTest(WJXBFS1, WJXBFS2)
from [previous pass]
]
Pass6 - Execution Duration: 0:00:00.00
[Populate Report Data]
Pass7 - Execution Duration: 0:00:00.06
drop table ZZTH0FDXLS4MD000
Pass8 - Execution Duration: 0:00:00.01
drop table ZZTU1RY0YSKMD001
Pass0 and Pass1 are issued by Intelligence Server to compute the metric Daily Sales
(last year). The Intelligence Server prepares the temporary table with Call Center and
Day as its key. Then, it retrieves last years sales using the transformation Last Years.
Pass2 and Pass3 are issued to compute the metric Daily Sales (current year).
Attributes Call Center and Day are used as keys to the temporary table. This pass is
similar to Pass0 and Pass1 with the key difference being that the metric does not
have a transformation.
In Pass4 and Pass5, the Intelligence Server computes the p-value for each call center,
using the HeteroscedasticTTest and the HomoscedasticTTest functions.
The remaining passes perform final report preparation and drop the temporary
tables.

Confidence level example


The reports and report components in this example can be found in the following folder:
MicroStrategy Tutorial\Public Objects\Reports\
MicroStrategy Platform Capabilities\Advanced Analytics\
Statistics and Forecasting\Confidence Level
Confidence level is used to determine valuable customers in two slightly different ways:

2017, MicroStrategy Inc. 77


Functions Reference

Who are my valuable customers? (Example 1), page 78: Determines valuable
customers as those whose average spending is above an upper bound of sales orders.
Who are my valuable customers? (Example 2), page 82: Determines valuable
customers as those whose average spending is above an upper bound of sales orders.
Additionally, valuable customers are compared for each Customer Region, rather
than comparing customers in all regions.

Who are my valuable customers? (Example 1)


The basic goal is to define a cut-off value that represents the minimum requirement to be
classified as a valuable customer. To identify the valuable customers in your customer
base, you must determine the parameters that help differentiate those customers from
the others. In this example, valuable customers are those whose average spending is
above an upper bound of sales orders.
The ORDER_FACT table contains all orders received. Assume that the sales order amount
is normally distributed with a certain mean and standard deviation. Based on the
assumption of normal distribution and a confidence level of 99%, you can define valuable
customers as those who have a spending average above an upper bound of sales orders.
To determine the valuable customers based on this criteria, you need to know several
values. Use the following metrics to obtain these values.
1 You must know the average sales order from all orders in the ORDER_FACT table.
This is the arithmetic mean of the normal distribution. You can get this value using
the Avg function. The metric to compute the average of sales orders from the
ORDER_FACT table can be defined as:
M01 = Avg(Revenue) {![Call Center]+, !Year+,
!Employee+, !Order+, !Day+}
Since Day, Employee, and Order are the highest attributes that are parents of the
keys in the ORDER_FACT table, include them as the level of aggregation to make sure
that the ORDER_FACT table is used. Also, the average must be calculated over all
sales order amounts, so you must set the group-by on the level attributes to none.
This ensures that the metric does not group by any of these attributes.
2 You must know the standard deviation of sales orders from all orders. This number is
the standard deviation of the normal distribution. You can get this value using the
StDevP function (see StDevP (standard deviation of a population), page 112).

StDevP is the standard deviation of a population, while StDev is the standard


deviation of a sample. Therefore, the StDevP function is used when there is
enough data to fully represent a scenario.

The metric to compute the population standard deviation of sales orders from the
ORDER_FACT table is defined as follows:
M02 = StdevP(Revenue) {![Call Center]+, !Year+,
!Employee+, !Order+, !Day+}
3 You must know the number of rows in the ORDER_FACT table. You need this value
to calculate the cut-off value. You can retrieve this value by using the Count function,

78 2017, MicroStrategy Inc.


Functions Reference

in particular, Count from the ORDER_FACT table. The metric to count the data in
the ORDER_FACT table is defined as follows:
M03 = Count(Revenue) {![Call Center]+, !Year+,
!Employee+, !Order+, !Day+}
4 Under the assumption of normal distribution with the parameters given above, you
must determine the cut-off value that represents the top 5% of sales order amounts.
To do this, you can use the Confidence plug-in function. The metric to compute the
cut-off number is defined as follows, using some of the metrics defined above:
M04 = Confidence(0.01, [M02], [M03])

The number 0.01 comes from a normal distribution with 99% confidence level.

5 The metric that calculates the upper bound uses some of the metrics defined above,
and is defined as follows:
M05 = ([M01] + [M04])
6 You must calculate the average sales for each customer to get a list of valuable
customers based on the criteria. The metric is defined as follows:
Average Sales = Avg(Revenue) {~+}
You do not need to include the level of aggregation for Average Sales since the
default {~+} notation is replaced by the attribute Customer.
7 You must also apply a metric qualification in a filter to restrict the rows returned to
those that meet the definition of valuable customers. The filter is defined as follows:
F01 = Set of Customers where (Average Sales Greater
than [M05]
To generate a report listing valuable customers, create a report with the attribute
Customer on the row axis and the attribute Customer Region on the page-by axis. Apply
filter F01 to the report to produce a list of valuable customers for each attribute element
in Customer Region. The Valuable Customers 01 report is shown below:

2017, MicroStrategy Inc. 79


Functions Reference

The SQL generated for the report Valuable Customers 01 is as follows:


Pass0 - Execution Duration: 0:00:00.07
create table ZZTLZV82TJ0MD000 (
CUSTOMER_ID LONG,
WJXBFS1 DOUBLE)
Pass1 - Execution Duration: 0:00:00.20
insert into ZZTLZV82TJ0MD000
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
avg(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [CUSTOMER_SLS] a11
group by a11.[CUSTOMER_ID]
Pass2 - Execution Duration: 0:00:00.04
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
a11.[ORDER_ID] AS ORDER_ID,
a11.[ITEM_ID] AS ITEM_ID,
a11.[EMP_ID] AS EMP_ID,
a11.[ORDER_DATE] AS DAY_DATE,
a11.[CUSTOMER_ID] AS CUSTOMER_ID0,
(a11.[QTY_SOLD] * (a11.[UNIT_PRICE] - a11.[DISCOUNT]))
AS WJXBFS1
from [ORDER_DETAIL] a11
Pass3 - Execution Duration: 0:00:00.10
create table ZZTW4A12VECMD001 (
CUSTOMER_ID LONG,
WJXBFS1 DOUBLE)
Pass4 - Execution Duration: 0:00:00.00
[Analytical SQL calculated by the Analytical Engine:
select CUSTOMER_ID0,
(ISNULL(avg(WJXBFS1), 0) + Confidence(0.01,
StdevP(WJXBFS1), count(WJXBFS1)))
from [previous pass]

80 2017, MicroStrategy Inc.


Functions Reference

]
Pass5 - Execution Duration: 0:00:00.00
insert into ZZTW4A12VECMD001 values (1, 33.4351602545)
Pass6 - Execution Duration: 0:00:00.00
create table ZZTPDKUSLWSMQ002 (
CUSTOMER_ID LONG)
Pass7 - Execution Duration: 0:00:00.10
insert into ZZTPDKUSLWSMQ002
select pa11.[CUSTOMER_ID] AS CUSTOMER_ID
from [ZZTLZV82TJ0MD000] pa11,
[ZZTW4A12VECMD001] pa12
where pa11.[CUSTOMER_ID] = pa12.[CUSTOMER_ID]
and (pa11.[WJXBFS1] > pa12.[WJXBFS1])
Pass8 - Execution Duration: 0:00:01.53
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
max(a13.[CUST_LAST_NAME]) AS CUST_LAST_NAME,
max(a13.[CUST_FIRST_NAME]) AS CUST_FIRST_NAME,
a15.[CUST_REGION_ID] AS CUST_REGION_ID,
max(a16.[CUST_REGION_NAME]) AS CUST_REGION_NAME0,
avg(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [CUSTOMER_SLS] a11,
[ZZTPDKUSLWSMQ002] pa12,
[LU_CUSTOMER] a13,
[LU_CUST_CITY] a14,
[LU_CUST_STATE] a15,
[LU_CUST_REGION] a16
where a11.[CUSTOMER_ID] = pa12.[CUSTOMER_ID] and
a11.[CUSTOMER_ID] = a13.[CUSTOMER_ID] and
a13.[CUST_CITY_ID] = a14.[CUST_CITY_ID] and
a14.[CUST_STATE_ID] = a15.[CUST_STATE_ID] and
a15.[CUST_REGION_ID] = a16.[CUST_REGION_ID]
group by a11.[CUSTOMER_ID],
a15.[CUST_REGION_ID]
Pass9 - Execution Duration: 0:00:00.00
[Populate Report Data]
Pass10 - Execution Duration: 0:00:00.06
drop table ZZTLZV82TJ0MD000
Pass11 - Execution Duration: 0:00:00.00
drop table ZZTW4A12VECMD001
Pass12 - Execution Duration: 0:00:00.00
drop table ZZTPDKUSLWSMQ002
Pass0 and Pass1 compute the average sales per customer (Average Sales metric) and
put the results in a temporary table.
Pass2 retrieves ORDER_DETAIL data, puts the data into memory, and uses the data
to compute M01, M02, and M03.
Pass3 creates a temporary table used to store the results of the calculations.
Pass4 calculates M02 using the Intelligence Server because the group-value function
StDevP is not supported by the Access database. The values of M01, M02, and M03
are used to compute M05.
Pass5 inserts the results of the calculations into the temporary table.
Pass6 and Pass7 use the earlier two temporary tables to qualify on valuable customers
based on the definition.
Pass8 displays the report with attributes Customer and Customer Region.
The remaining passes perform additional report preparation and drop the temporary
tables.

2017, MicroStrategy Inc. 81


Functions Reference

Who are my valuable customers? (Example 2)


This example generates a list of valuable customers based on a different definition from
the previous example.
Assume a normal distribution of sales orders is still valid, but the cut-off value is for each
Customer Region. This means you must compare the average spending of each customer
against the average spending of the Customer Region to which the customer belongs. To
allow for more variation, take the average value from the current year data, but use
sample standard deviations for all available years. Use a confidence level of 95%.
Valuable customers are defined as those customers who have total spending above the
cut-off value. The cut-off value is calculated using the filters and metrics defined below:
1 The filter used to limit the calculation of average sales orders to only the data for the
current year is defined as follows:
Current year in sample DB = Year In list (2010)
2 The metric used to calculate the average sales order is defined as follows:
M07 = Avg(Revenue) {[Customer Region]+, !Year+,
!Employee+, !Order+, !Day+} <[Current year in sample
DB]; @2; ->
3 The metric used to calculate the standard deviation of sales orders is defined as
follows:
M08 = Stdev(Revenue) {[Customer Region]+, ![Call
Center]+, !Year+, !Employee+, !Order+, !Day+}
Notice that the function Stdev (standard deviation of a sample) is used in this metric
because the amount of data is limited to each Customer Region. This means the data
can be considered as more of a sample than a full population.
4 The metric used to determine the cut-off value is defined as follows, using the
preceding metrics:
M09 = ([M07] + (1.96 * [M08]))

The number 1.96 comes from a normal distribution with 95% confidence
level. In practice, this number is often rounded to 2 instead of 1.96.

5 The metric used to determine each customers spending so that it can be compared
to the cut-off value is defined as follows:
M10 = Sum(Revenue){~+}
6 The metric qualification (filter) needed to restrict the report to a list of valuable
customers based on Definition 2 is defined as follows:
F03 = Set of Customer where (M10 Greater than [M09])
7 To view the last order sales from all valuable customers, use the metric defined as
follows:
Last Order Sales = Sum(Revenue) {~+, >|Day+}

82 2017, MicroStrategy Inc.


Functions Reference

You must compute order sales for each customer at the Day level from the ORDER_
FACT table, but must take it from the last Day on that fact table. The {~+} is
replaced by any attribute on the report. In this example, it is the Customer attribute.
Build a report putting the attribute Customer on the row axis, the attribute Customer
Region on the page-by axis, and the Last Order Sales metric on the column axis, then
applying the filter F03. The Valuable Customers 02 report is shown below.

The SQL generated by the Valuable Customers 02 report is as follows:


Pass0 - Execution Duration: 0:00:00.00
create table ZZT3WSP7T8BMD000 (
CUSTOMER_ID LONG,
WJXBFS1 DOUBLE)
Pass1 - Execution Duration: 0:00:00.06
insert into ZZT3WSP7T8BMD000
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
sum(a11.[TOT_DOLLAR_SALES]) AS WJXBFS1
from [CUSTOMER_SLS] a11
group by a11.[CUSTOMER_ID]
Pass2 - Execution Duration: 0:00:00.00
create table ZZT36UF785VMD001 (
CUST_REGION_ID SHORT,
WJXBFS1 DOUBLE)
Pass3 - Execution Duration: 0:00:02.18
insert into ZZT36UF785VMD001
select a14.[CUST_REGION_ID] AS CUST_REGION_ID,
avg((a11.[QTY_SOLD] * (a11.[UNIT_PRICE] -

2017, MicroStrategy Inc. 83


Functions Reference

a11.[DISCOUNT]))) AS WJXBFS1
from [ORDER_DETAIL] a11,
[LU_CUSTOMER] a12,
[LU_CUST_CITY] a13,
[LU_CUST_STATE] a14,
[LU_DAY] a15
where a11.[CUSTOMER_ID] = a12.[CUSTOMER_ID] and
a12.[CUST_CITY_ID] = a13.[CUST_CITY_ID] and
a13.[CUST_STATE_ID] = a14.[CUST_STATE_ID] and
a11.[ORDER_DATE] = a15.[DAY_DATE]
and a15.[YEAR_ID] in (2010)
group by a14.[CUST_REGION_ID]
Pass4 - Execution Duration: 0:00:00.03
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
a11.[ORDER_ID] AS ORDER_ID,
a11.[ITEM_ID] AS ITEM_ID,
a11.[EMP_ID] AS EMP_ID,
a11.[ORDER_DATE] AS DAY_DATE,
a14.[CUST_REGION_ID] AS CUST_REGION_ID,
(a11.[QTY_SOLD] * (a11.[UNIT_PRICE] - a11.[DISCOUNT]))
AS WJXBFS1
from [ORDER_DETAIL] a11,
[LU_CUSTOMER] a12,
[LU_CUST_CITY] a13,
[LU_CUST_STATE] a14
where a11.[CUSTOMER_ID] = a12.[CUSTOMER_ID] and
a12.[CUST_CITY_ID] = a13.[CUST_CITY_ID] and
a13.[CUST_STATE_ID] = a14.[CUST_STATE_ID]
Pass5 - Execution Duration: 0:00:00.00
create table ZZTS6MZ3N2BMD002 (
CUST_REGION_ID SHORT,
WJXBFS1 DOUBLE)
Pass6 - Execution Duration: 0:00:00.00
[Analytical SQL calculated by the Analytical Engine:
select CUST_REGION_ID,
ISNULL((1.96 * Stdev(WJXBFS1)), 0)
from [previous pass]
]
Pass7 - Execution Duration: 0:00:00.00
insert into ZZTS6MZ3N2BMD002 values (1, 127.4088118401)
Pass8 - Execution Duration: 0:00:00.00
create table ZZTSMWZF9SRMQ003 (
CUSTOMER_ID LONG)
Pass9 - Execution Duration: 0:00:00.36
insert into ZZTSMWZF9SRMQ003
select distinct pa11.[CUSTOMER_ID] AS CUSTOMER_ID
from [ZZT3WSP7T8BMD000] pa11,
[LU_CUSTOMER] a12,
[LU_CUST_CITY] a13,
[LU_CUST_STATE] a14,
[ZZT36UF785VMD001] pa15,
[ZZTS6MZ3N2BMD002] pa16
where pa11.[CUSTOMER_ID] = a12.[CUSTOMER_ID] and
a12.[CUST_CITY_ID] = a13.[CUST_CITY_ID] and
a13.[CUST_STATE_ID] = a14.[CUST_STATE_ID] and
a14.[CUST_REGION_ID] = pa15.[CUST_REGION_ID] and
pa15.[CUST_REGION_ID] = pa16.[CUST_REGION_ID]
and (pa11.[WJXBFS1] > (IIF(ISNULL(pa15.[WJXBFS1]), 0,
pa15.[WJXBFS1]) + IIF(ISNULL(pa16.[WJXBFS1]), 0,
pa16.[WJXBFS1])))
Pass10 - Execution Duration: 0:00:00.00
create table ZZTRX7EEWHNNB004 (
DAY_DATE TIMESTAMP,
CUSTOMER_ID LONG,
WJXBFS1 DOUBLE)
Pass11 - Execution Duration: 0:00:07.89

84 2017, MicroStrategy Inc.


Functions Reference

insert into ZZTRX7EEWHNNB004


select a11.[ORDER_DATE] AS DAY_DATE,
a11.[CUSTOMER_ID] AS CUSTOMER_ID,
sum((a11.[QTY_SOLD] * (a11.[UNIT_PRICE] -
a11.[DISCOUNT]))) AS WJXBFS1
from [ORDER_DETAIL] a11,
[ZZTSMWZF9SRMQ003] pa12
where a11.[CUSTOMER_ID] = pa12.[CUSTOMER_ID]
group by a11.[ORDER_DATE],
a11.[CUSTOMER_ID]
Pass12 - Execution Duration: 0:00:00.00
create table ZZTQFB0EMCJMB005 (
CUSTOMER_ID LONG,
WJXBFS1 TIMESTAMP)
Pass13 - Execution Duration: 0:00:00.59
insert into ZZTQFB0EMCJMB005
select pc11.[CUSTOMER_ID] AS CUSTOMER_ID,
max(pc11.[DAY_DATE]) AS WJXBFS1
from [ZZTRX7EEWHNNB004] pc11
group by pc11.[CUSTOMER_ID]
Pass14 - Execution Duration: 0:00:00.78
select distinct pa11.[CUSTOMER_ID] AS CUSTOMER_ID,
a13.[CUST_LAST_NAME] AS CUST_LAST_NAME,
a13.[CUST_FIRST_NAME] AS CUST_FIRST_NAME,
a15.[CUST_REGION_ID] AS CUST_REGION_ID,
a16.[CUST_REGION_NAME] AS CUST_REGION_NAME0,
pa11.[WJXBFS1] AS WJXBFS1
from [ZZTRX7EEWHNNB004] pa11,
[ZZTQFB0EMCJMB005] pa12,
[LU_CUSTOMER] a13,
[LU_CUST_CITY] a14,
[LU_CUST_STATE] a15,
[LU_CUST_REGION] a16
where pa11.[CUSTOMER_ID] = pa12.[CUSTOMER_ID] and
pa11.[DAY_DATE] = pa12.[WJXBFS1] and
pa11.[CUSTOMER_ID] = a13.[CUSTOMER_ID] and
a13.[CUST_CITY_ID] = a14.[CUST_CITY_ID] and
a14.[CUST_STATE_ID] = a15.[CUST_STATE_ID] and
a15.[CUST_REGION_ID] = a16.[CUST_REGION_ID]
Pass15 - Execution Duration: 0:00:00.00
[Populate Report Data]
Pass16 - Execution Duration: 0:00:00.00
drop table ZZT3WSP7T8BMD000
Pass17 - Execution Duration: 0:00:00.00
drop table ZZT36UF785VMD001
Pass18 - Execution Duration: 0:00:00.01
drop table ZZTS6MZ3N2BMD002
Pass19 - Execution Duration: 0:00:00.00
drop table ZZTSMWZF9SRMQ003
Pass20 - Execution Duration: 0:00:00.00
drop table ZZTRX7EEWHNNB004
Pass21 - Execution Duration: 0:00:00.00
drop table ZZTQFB0EMCJMB005
Pass0 and Pass1 compute metric M10.
Pass2 and Pass3 compute metric M07.
Pass4, Pass5, Pass6, and Pass7 compute (1.96 * M08). The group-value function for
M08, StDev, is not supported by the database (Microsoft Access) so it is calculated by
Intelligence Server.
Pass8 and Pass9 obtain the list of valuable customers, evaluating the filter condition
F03.

2017, MicroStrategy Inc. 85


Functions Reference

Pass10, Pass11, Pass12, and Pass13 compute the Last Order Sales metric.
Pass 14 displays the results for the report.
All other passes drop the temporary tables.

Statistical descriptors - Simple example


The report and report components used in this example can be found in the
MicroStrategy Tutorial project in the following folder:
MicroStrategy Tutorial\Public Objects\Reports\
MicroStrategy Platform Capabilities\Advanced Analytics\
Statistics and Forecasting\Statistical Descriptors

The Component Objects - Advanced folder contains additional statistical


descriptor examples.

How do I learn more about my customers?


You can get more information about the customers in each region by performing
statistical calculations on their spending. This example uses analysis to answer the
following questions:
How many customers exist in each customer region?
What is the average spending of customers in each customer region?
What is the median spending of customers in each customer region?
What is the standard deviation of customer spending in each customer region?
How much is the 25th and 75th percentile of customer spending in each customer
region?
These are statistical descriptors about customers in each customer region. This type of
data can help you understand how customers spend their money.
To answer the questions above, you must create a set of simple metrics based on other
metrics. These metrics are defined using nested group-value functions.
1 This metric determines the number of customers in each region:
Count of Customers = Sum(Count(1) {~+, Customer+} )
{~+}
2 This metric determines the average spending of customers in each region:
a.Mean Revenue Per Customer = Avg(Sum(Revenue) {~+,
Customer+} ) {~+}
3 This metric determines the median spending of customers in each region:
b.Median Revenue Per Customer = Median(Sum(Revenue)
{~+, Customer+} ) {~+}

86 2017, MicroStrategy Inc.


Functions Reference

4 This metric determines the standard deviation of customer spending in each region:
e.StDev of Revenue Per Customer = Stdev(Sum(Revenue)
{~+, Customer+} ) {~+}
5 This metric determines the threshold for the 25th percentile:
25th Percentile of Revenue Per Customer = Percentile
(Sum(Revenue) {~+, Customer+} , 0.25) {~+}
6 This metric determines the threshold for the 75th percentile:
75th Percentile of Revenue Per Customer = Percentile
(Sum(Revenue) {~+, Customer+} , 0.75) {~+}
Create a report and place all of the metrics described above on the row axis and place the
attribute Customer Region on the column axis. Execute the Statistical Descriptors -
Simple report, which is shown below:

This report provides information on the behavior of customer spending in each customer
region. For example, the Northwest customer region has the least number of customers,
but most customers in that region spend more than any other region, as seen in the
larger mean and median revenues per customer. This can highlight that it is worthwhile
to gain a larger customer base in this region. However, the somewhat lower value for the
standard deviation of revenue per customer in the Northwest region also indicates that
this result might be due to the smaller sample size and a few customers that spend
abnormally large amounts. This standard deviation value helps to show that while a
campaign to increase the customer base in the region is still an attractive idea, the results
should be monitored to determine if revenues continue to be higher per customer.
The SQL generated for the Statistical Descriptors - Simple report is as follows:
Pass0 - Execution Duration: 0:00:00.00
create table ZZT42W71C95MD000 (
CUSTOMER_ID LONG,
WJXBFS1 LONG,
WJXBFS2 DOUBLE)
Pass1 - Execution Duration: 0:00:00.06
insert into ZZT42W71C95MD000
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
count(1.0) AS WJXBFS1,
sum(a11.[TOT_DOLLAR_SALES]) AS WJXBFS2
from [CUSTOMER_SLS] a11
group by a11.[CUSTOMER_ID]
Pass2 - Execution Duration: 0:00:00.09
select distinct pa11.[CUSTOMER_ID] AS CUSTOMER_ID,
a14.[CUST_REGION_ID] AS CUST_REGION_ID,
a15.[CUST_REGION_NAME] AS CUST_REGION_NAME0,
pa11.[WJXBFS1] AS WJXBFS1,
pa11.[WJXBFS2] AS WJXBFS2
from [ZZT42W71C95MD000] pa11,
[LU_CUSTOMER] a12,

2017, MicroStrategy Inc. 87


Functions Reference

[LU_CUST_CITY] a13,
[LU_CUST_STATE] a14,
[LU_CUST_REGION] a15
where pa11.[CUSTOMER_ID] = a12.[CUSTOMER_ID] and
a12.[CUST_CITY_ID] = a13.[CUST_CITY_ID] and
a13.[CUST_STATE_ID] = a14.[CUST_STATE_ID] and
a14.[CUST_REGION_ID] = a15.[CUST_REGION_ID]
Pass3 - Execution Duration: 0:00:00.00
[Analytical SQL calculated by the Analytical Engine:
select CUST_REGION_ID,
CUST_REGION_NAME0,
sum(WJXBFS1),
avg(WJXBFS2),
Median(WJXBFS2),
Stdev(WJXBFS2),
Percentile(WJXBFS2, 0.25),
Percentile(WJXBFS2, 0.75)
from [previous pass]
]
Pass4 - Execution Duration: 0:00:00.00
[Populate Report Data]
Pass5 - Execution Duration: 0:00:00.00
drop table ZZT42W71C95MD000
The first two passes of SQL (Pass0 and Pass1) prepare and calculate the values used
in other metrics.
The Intelligence Server optimizes the process by pulling only a single column of
revenue data even though it is used in several other metrics.
In Pass2 and Pass3 the Intelligence Server retrieves the results from Pass1 to
compute the other metrics. In Pass3 the Intelligence Server acts as an in-memory
database, using the values from Pass2 to calculate the following group-value
functions: Sum, Avg, Median, Stdev, and Percentile.
The remaining passes prepare the report and drop the temporary tables.

Forecasting example
The report and report components in this example can be found in the MicroStrategy
Tutorial project in the following folder:
MicroStrategy Tutorial\Public Objects\Reports\
MicroStrategy Platform Capabilities\Advanced Analytics\
Statistics and Forecasting\Forecasting

How to forecast future sales based on existing sales data?


The MicroStrategy Tutorial project has sales data for multiple years. Using this data, you
can forecast potential sales for the upcoming years.
To plot a sales line for the expected future sales data, apply linear extrapolation
techniques to the historical data. Linear extrapolation involves the assumption that the
trend of past data will continue in a linear fashion. The slope and Y-intercept values are
calculated based on historical data, and the same slope and Y-intercept are applied to
extend the data into the future.
This is just one type of forecasting analysis that can be done in MicroStrategy. There are
additional MicroStrategy functions that provide other variations on calculating a forecast

88 2017, MicroStrategy Inc.


Functions Reference

of values. For information on these functions, how they forecast values, and forecasting
examples using these functions, see:
ForecastV (forecast, vector input), page 344
GrowthV (growth, vector input), page 348
TrendV (trend, vector input), page 370
To perform the analysis, build a set of metrics that calculate each of the components in
the analysis, then use those metrics together to create the final Forecasting metric.
1 The metric that calculates sales revenue at the Year level is defined as follows:
Revenue {Year} = Sum(Revenue) {~+, Year+}
2 The metric that expresses the Year elements as a series of integers, to simplify the
analysis, is defined as follows:
YearNumber = RunningSum<SortBy= (Year@ID) >(Sum(1) {~+,
Year } )
3 The metric that calculates the slope of the line produced by the Revenue {Year}
metric is defined as follows:
SlopeMetric = Slope([Revenue {Year}], YearNumber) {~+,
!Year+}
4 The metric that calculates the Y-intercept of the line produced by the Revenue {Year}
metric is defined as follows:
InterceptMetric = Intercept([Revenue {Year}],
YearNumber) {~+, !Year+}
5 The final metric combines the three preceding metrics into a forecast value. This
formula follows the standard formula for a line: y = mx + b. The metric is defined
as follows:
Forecast = ((SlopeMetric * YearNumber) +
InterceptMetric)
Place the Forecast metric on a report with Year. A sales forecast is generated for all
available years. The Forecast (Graph) report displays as follows:

2017, MicroStrategy Inc. 89


Functions Reference

The sales for 2008, 2009, and 2010 are actual recorded values, and the sales for 2011 are
a linear extrapolation of the existing data into the future.

Another report in the Forecasting folder, Forecast (Grid) places the Forecast
metric alongside the Revenue metric for comparison. However, it requires the use
of outer joins to work properly. The MicroStrategy Tutorial includes Microsoft
Access as its default database; in order for the Forecast (Grid) report to work, the
Tutorial warehouse must be moved into a database platform that fully supports
outer joins.

The following SQL is generated for the Forecast (Graph) report:


Pass0 - Execution Duration: 0:00:00.20
create table ZZT16JMSID1MD000 (
YEAR_ID SHORT,
CATEGORY_ID SHORT,
WJXBFS1 DOUBLE)
Pass1 - Execution Duration: 0:00:00.10
insert into ZZT16JMSID1MD000
select a11.[YEAR_ID] AS YEAR_ID,
a11.[CATEGORY_ID] AS CATEGORY_ID,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [YR_CATEGORY_SLS] a11
Pass2 - Execution Duration: 0:00:00.23
select a12.[YEAR_ID] AS YEAR_ID,
a11.[CATEGORY_ID] AS CATEGORY_ID,
1.0 AS WJXBFS1
from [LU_CATEGORY] a11,
[LU_YEAR] a12
Pass3 - Execution Duration: 0:00:00.00
create table ZZT3M2QSNWDMD001 (
YEAR_ID SHORT,
CATEGORY_ID SHORT,
WJXBFS1 DOUBLE)
Pass4 - Execution Duration: 0:00:00.00
[Analytical SQL calculated by the Analytical Engine:
select YEAR_ID,
CATEGORY_ID,

90 2017, MicroStrategy Inc.


Functions Reference

RunningSum<SortBy= ([YEAR_ID])>(WJXBFS1)
from [previous pass]
]
Pass5 - Execution Duration: 0:00:00.00
insert into ZZT3M2QSNWDMD001 values (2008, 1, 1)
Pass6 - Execution Duration: 0:00:00.00
create table ZZTDMBESMXPOJ002 (
YEAR_ID SHORT,
CATEGORY_ID SHORT)
Pass7 - Execution Duration: 0:00:00.00
insert into ZZTDMBESMXPOJ002
select pa11.[YEAR_ID] AS YEAR_ID,
pa11.[CATEGORY_ID] AS CATEGORY_ID
from [ZZT16JMSID1MD000] pa11
Pass8 - Execution Duration: 0:00:00.00
insert into ZZTDMBESMXPOJ002
select pa11.[YEAR_ID] AS YEAR_ID,
pa11.[CATEGORY_ID] AS CATEGORY_ID
from [ZZT3M2QSNWDMD001] pa11
Pass9 - Execution Duration: 0:00:00.00
create table ZZT9MCAB4STOD003 (
YEAR_ID SHORT,
CATEGORY_ID SHORT)
Pass10 - Execution Duration: 0:00:00.00
insert into ZZT9MCAB4STOD003
select distinct pa11.[YEAR_ID] AS YEAR_ID,
pa11.[CATEGORY_ID] AS CATEGORY_ID
from [ZZTDMBESMXPOJ002] pa11
Pass11 - Execution Duration: 0:00:00.00
select pa11.[YEAR_ID] AS YEAR_ID,
pa11.[CATEGORY_ID] AS CATEGORY_ID,
pa12.[WJXBFS1] AS WJXBFS1,
pa13.[WJXBFS1] AS WJXBFS2
from [ZZT9MCAB4STOD003] pa11,
[ZZT16JMSID1MD000] pa12,
[ZZT3M2QSNWDMD001] pa13
where pa11.[CATEGORY_ID] = pa12.[CATEGORY_ID] and
pa11.[YEAR_ID] = pa12.[YEAR_ID] and
pa11.[CATEGORY_ID] = pa13.[CATEGORY_ID] and
pa11.[YEAR_ID] = pa13.[YEAR_ID]
Pass12 - Execution Duration: 0:00:00.00
create table ZZTMYCAAR65MD004 (
CATEGORY_ID SHORT,
WJXBFS1 DOUBLE,
WJXBFS2 DOUBLE)
Pass13 - Execution Duration: 0:00:00.00
[Analytical SQL calculated by the Analytical Engine:
select CATEGORY_ID,
Slope(WJXBFS1, WJXBFS2),
Intercept(WJXBFS1, WJXBFS2)
from [previous pass]
]
Pass14 - Execution Duration: 0:00:00.00
insert into ZZTMYCAAR65MD004 values (1,
58938.0812500116, 585341.077083335)
Pass15 - Execution Duration: 0:00:00.04
select pa11.[CATEGORY_ID] AS CATEGORY_ID,
a13.[CATEGORY_DESC] AS CATEGORY_DESC0,
pa11.[YEAR_ID] AS YEAR_ID,
(IIF(ISNULL((pa12.[WJXBFS1] * pa11.[WJXBFS1])), 0,
(pa12.[WJXBFS1] * pa11.[WJXBFS1])) +
IIF(ISNULL(pa12.[WJXBFS2]), 0, pa12.[WJXBFS2])) AS
WJXBFS1
from [ZZT3M2QSNWDMD001] pa11,
[ZZTMYCAAR65MD004] pa12,
[LU_CATEGORY] a13

2017, MicroStrategy Inc. 91


Functions Reference

where pa11.[CATEGORY_ID] = pa12.[CATEGORY_ID] and


pa11.[CATEGORY_ID] = a13.[CATEGORY_ID]
Pass16 - Execution Duration: 0:00:00.00
[Populate Report Data]
Pass17 - Execution Duration: 0:00:00.00
drop table ZZT16JMSID1MD000
Pass18 - Execution Duration: 0:00:00.00
drop table ZZT3M2QSNWDMD001
Pass19 - Execution Duration: 0:00:00.00
drop table ZZTDMBESMXPOJ002
Pass20 - Execution Duration: 0:00:00.00
drop table ZZT9MCAB4STOD003
Pass21 - Execution Duration: 0:00:00.00
drop table ZZTMYCAAR65MD004
Pass0 and Pass1 calculate the Revenue {Year} metric.
Pass2 calculates the inner portion of the YearNumber metric, assigning the integer 1
to each year available in the LU_YEAR lookup table. Note that this metric was
defined by adding Year dimensionality with filtering set to None. This forces the
metric into its own pass of SQL, to ensure that all years in the lookup table are
numbered, not just the years with data in the fact table.
Passes 3 to 14 calculate the metrics YearNumber, SlopeMetric, and InterceptMetric.
The Intelligence Server performs the calculations based on the data in the temporary
table from Pass0, Pass1, and Pass2. Values are calculated and inserted back into the
temporary tables.
In Pass15, the Forecast metric is calculated based on the information from all of the
previous calculations. The mx+b calculation is performed as part of the SQL
statement.
The remaining passes prepare the report and drop the temporary tables.

92 2017, MicroStrategy Inc.


2
STANDARD FUNCTIONS
The standard functions in this chapter range from simple operations like Sum and
Product to internal functions that allow you to define your own metrics, facts, and
filters. Taken as a set, they provide a powerful toolset for performing common
mathematical calculations, grouping data, examining correlation, validating data, and
formatting report information for display.
The following categories of functions are covered:
Basic functions, page 94
Date and time functions, page 119
Internal functions, page 133
NULL/Zero functions, page 148
OLAP functions, page 150
Rank and NTile functions, page 205
String functions, page 223
Each section in this chapter describes a function category and presents a list of functions
within each category. Each section also presents the data necessary to understand and
implement each individual function. The information provided for each function
includes
An explanation of the data returned by the function
The syntax of the function including function name, available parameters, the
parameter setting defaults, and the types of data that can be used with the function
The mathematical expression illustrating exactly how the calculation is defined in
MicroStrategy (if applicable)
Usage notes describing any error conditions, invalid data types, or key information to
know before using the function (if applicable)
An example of the function in use; this may be either a report example or a simple
text description of the data returned based on the specified input

Note the following:

2017, MicroStrategy Inc. 93


Functions Reference

The report examples in this section use objects and data found in the
MicroStrategy Tutorial.
See Appendix A, MicroStrategy and Database Support for Functions, for a list
of the databases and the functions they support.

Basic functions
These are basic mathematical functions like Avg, Greatest, Least, Max, Min, and so on,
and are among the most commonly used functions.

Add
Returns the sum of two or more values. The Add function differs from the Sum function
(see Sum , page 115), which returns the sum of values in a single value list. Add can take
multiple metrics as inputs and add the values of the metrics.
You can also construct these types of metrics using the plus operator (see Plus (+), page
242) instead of the Add function.
Syntax
Add(Argument1, Argument2,..., ArgumentN)
Where
The arguments must be metrics or constants.
Example
You can use the Add function to return the sum of related metrics. In the report shown
below, the Total Paid Compensation metric uses the formula Add([Paid Bonus],
[Paid Salary]) to return the total compensation paid to each employee. This report
was created in the MicroStrategy Human Resources Analysis Module.

94 2017, MicroStrategy Inc.


Functions Reference

Average
Average performs a sum of a set of values and divides this total by the number of values
in the set. This returns the average (also known as arithmetic mean) for the set of values.
The Average function differs from the Avg function (see Avg (average), page 95),
which returns the average of values in a single value list. The Average function can take
multiple metrics as inputs and average the values of the metrics. You can use this
function to compute and display the average of two or more metrics on a report.
Syntax
Average(Argument1, Argument2,..., ArgumentN)
Where:
The arguments must be metrics or constants.

Avg (average)
Avg calculates the sum of a single value list and divides the result by the number of
values in the list. This returns the average (arithmetic mean) of the listed values.
Avg is often used to create subtotals and metrics based on fact data. This is a group-value
function.
To calculate an average while applying a weight to the values, see WeightedMean, page
201.
Syntax
Avg<Distinct, FactID, UseLookupForAttributes>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
Distinct is a TRUE/FALSE parameter that allows you to use all values in the
calculation or to calculate using only the unique values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.
Usage notes
The Avg function ignores NULL values but uses zero values in its calculation.
Example
Example 1: In this simple example the average of a value list containing the values
(4,9,2,9) is calculated as follows:

2017, MicroStrategy Inc. 95


Functions Reference

(4+9+2+9)/4 = 6
Example 2: This report obtains the average salary for employees in each region. The
report contains the attributes Region, Employee, and Salary as well as the metric Average
Salary. A report filter limits the regions displayed to Northeast and Southeast. The metric
Average Salary is defined as follows: Avg(Salary){Region}
The function sums all salaries within a region and divides by the number of values,
resulting in the regional average salary.

For further examples of using the Avg function, see Example 1: Transformed fact, page
23 and Example 2: Compound metric, page 24, as well as Example 1: Average, page 24.

Condition
Condition is a shortcut function, available for various features in MicroStrategy Web,
that allows you to easily define the condition (filtering) of the final metric expression. A
conditional metric allows you to apply a filter to only one metric on a report without
affecting the other metrics. The metric filter can be either a filter or a prompt that
returns a list of filters to choose from. Only one filter or prompt can be associated with
each metric, but the metric filter can contain multiple qualifications. For additional
information on when to create conditional metrics, see the Advanced Reporting Guide.
Once you select the Condition shortcut function, you can then select the group
function for the calculation, such as Sum or Max. Additionally, the options to add or
remove a condition are displayed:
To add a condition to the metric, click the Browse icon ( ) to select a filter or a
prompt that returns a list of filters.
To remove the condition from a metric, click the Delete icon ( ).
You can also define how the condition is evaluated by clicking Condition advanced
options:
By default, the parts of the report filter that are based on parent or child attributes of
the attribute in the metric condition are ignored, and do not affect the calculation of
the conditional metric. To apply all criteria in the report filter to the conditional
metric, clear the Ignore related report filter elements check box. This option
is selected by default.

96 2017, MicroStrategy Inc.


Functions Reference

By default, the report filter is applied to the metric data and then the metric filter is
applied to those results. You can determine the order in which the report filter and
metric filter are applied to the metric. From the Interaction between metric
filter and report filter drop-down list, select one of the following:
To apply the report filter criteria first, then apply the metric filter to the results,
select Merge report filter into metric (default). For example, the metric
filter is revenue greater than $100 and the report filter is bottom 10 items for
sales. In this example, the report filter narrows the result set to only 10 items,
and then the metric condition filters out, from those 10 items, any items with a
revenue above $100.
To evaluate the metric filter first, then apply the report filter to the results, select
Merge metric condition into report. Using this option with the example
above, the metric condition returns all items with a revenue above $100. The
report filter then filters out all but the bottom 10 of those items, based on sales.
To combine the metric filter and the report filter, select Merge into new. Only
those results that meet both the metric filter and the report filter are included in
the metric. Using this option with the example above, the two filters are merged,
so that only those items that are in the bottom 10 in terms of sales and that have
sales greater than $100 are included.

Count
Count returns the number of elements in a list of values. This is a group-value function.
Syntax
Count<Distinct, FactID, UseLookupForAttributes, Null> (Argument)
Where:
Argument is an attribute, fact, or metric representing a list of values.
Distinct is a TRUE/FALSE parameter that allows you to count all elements in a list
or only the unique elements.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute:
If you set this parameter to TRUE, the aggregation is done for the unique set of
attribute elements, excluding any duplicates caused by additional attributes on
the report.
If you set this parameter to FALSE, the aggregation is done for all elements of an
attribute, including duplicate elements that can be included by displaying
additional attributes on a report.
For an example of how to use this parameter, see Performing counts of attributes,
page 98.
Example

2017, MicroStrategy Inc. 97


Functions Reference

This example creates a report that calculates the count of employees in each region. The
report contains the attributes Region and Employee, and the metric # of Employees. A
report filter limits the regions displayed to Central, South, Southeast, and Southwest. The
metric # of Employees is defined as follows: Count(Employee){Region, ~}.
The function counts each entry within a region and returns the last number in the
count.

Performing counts of attributes


While most functions are commonly used with facts and metrics, the Count function is
commonly used to count the number of elements for an attribute. For example, the
report shown below displays the customer revenue for each item they purchased.

98 2017, MicroStrategy Inc.


Functions Reference

This report also uses two derived metrics to display the following count information:
Number of Customers: This derived metric displays the count of customers. The
expression used to define the derived metric is
Count<UseLookupForAttributes=True>(Customer){}. By defining the
parameter UseLookupForAttributes=True, the Count function ignores any
multiple listings of each Customer attribute element. In the report shown above,
each separate item is ignored and only the unique attribute elements for Customer
are counted.
Number of Customer Purchases: This derived metric displays the count of
customer purchases. The expression used to define the derived metric is
Count<UseLookupForAttributes=False>(Customer){}. By defining the
parameter UseLookupForAttributes=False, the Count function counts each
listing of the Customer attribute element. In the report shown above, each separate
item is counted, which provides a count of customer purchases.
For information on creating derived metrics, along with other OLAP Services features,
see the In-memory Analytics Guide.

First
Returns the result of an aggregate applied over a set of rows that ranks as the first within
a specified order. This is a group-value function that shares the sort by capability of the
OLAP functions.
Syntax
First<FactID, SortBy>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
SortBy is a parameter that allows you to define the attribute or metric on which to
sort the data.
Example
The First function is often used to define subtotals. In this example, the First function
defines the subtotal for the metric units received, returning the units received for the
first quarter containing a value in 2003. The expression defines the subtotal as follows:
First<SortBy= (Day, Month, Quarter, Year) >([Units
Received]){@}
Argument is the metric to which the subtotal is applied.

For detailed instructions on creating and applying user-defined subtotals, see the
MicroStrategy Advanced Reporting Guide.

2017, MicroStrategy Inc. 99


Functions Reference

GeoMean (geometric mean)


This function can be used to find the average for a set of values contributing to a product.
While the Avg function is used to find the arithmetic mean for a set of values
contributing to a sum, GeoMean can be used to determine the average growth rate for a
given compound interest with variable rates.
This function takes the product of a set of values of size N and returns the Nth root of the
result (also known as geometric mean). GeoMean is a group-value function.
Syntax
GeoMean <FactID>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

Usage notes
This function returns an error if a value in the value list is negative.

100 2017, MicroStrategy Inc.


Functions Reference

Example
Suppose you have an investment that earns 10% the first year, 60% the second year, and
20% the third year, and you want to answer the question What is its average rate of
return? You do not want to use the Avg function to obtain the arithmetic mean, because
these numbers show that in the first year your investment was multiplied by 1.10, in the
second year by 1.60, and in the third year by 1.20. The average is the geometric mean of
these three numbers. This can be understood as looking for a constant that you can
multiply each years investment by, and get the same result as multiplying the first year
by 1.10, the second year by 1.60, and so forth. This constant is the geometric mean.
(1.10 * 1.60 * 1.20)1/3 = 1.283

The geometric mean is 1.283, so the average rate of return is about 28%.

Greatest
Returns the larger of two or more values. The Greatest function differs from the Max
function, which returns the largest value in a single value list. Greatest can take
multiple lists as input and compare the elements in the lists. It is used for comparisons
between metrics.
Syntax
Greatest(Argument1, Argument2,..., ArgumentN)
Where:
The arguments must be metrics.
Example
This simple example illustrates how data is returned by the Greatest function.
Given two value lists, the function compares the values in each position in the list and
returns a list containing the highest numbers from each position.

List 1 List 2 Result List

21 50 50
18 3 18
42 22 42
30 6 30
7 20 20

Histogram Median
Histogram Median is a distributive implementation to calculate approximation of median
over large datasets.
Formula

2017, MicroStrategy Inc. 101


Functions Reference

Where:
Lm is the lower limit of the median bar.
n is the total number of observations in the set
Fm-1 is the total number of observations in all bars below the median bar.
fm is the frequency of the median bar
c is the median bar width.
Syntax
HistogramMedian([ValueList], NumberOfHistograms)
Where:
ValueList is an attribute, fact, or metric representing a list of values.
NumberOfHistograms is an integer representing the number of histograms in the set to
be analyzed.
Example
This example shows a report to find the median Revenue per Customer for each Income
Bracket in the Central Region.
HistogramMedia([Max Revenue per Customer], [Max Revenue per Customer]) {~ ,
Region}

Last
The Last function returns the last value in a sorted set of values. It is often used to
define subtotals, as shown in the example below. This is a group-value function.
Syntax
Last<FactID, SortBy>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of values.

102 2017, MicroStrategy Inc.


Functions Reference

FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
SortBy is a parameter that allows you to define the attribute or metric on which to
sort the data.
Example
In this example, Last is used in the subtotal for the metric End on Hand, returning the
total items on hand in the last quarter of 2003. The subtotal expression is defined as
follows:
Last<SortBy= (Day, Month, Quarter, Year) >(End on Hand)
{@ }

For detailed instructions on creating and applying user-defined subtotals, see the
MicroStrategy Advanced Reporting Guide.

Least
This function returns the smaller of two or more values. The Least function differs
from the Min function, which returns the smallest value in a single value list. Least can
take multiple lists as input and compare the elements of the lists. It is used for
comparisons between metrics. This is a single-value function.
Syntax
Least(Argument1, Argument2,..., ArgumentN)

2017, MicroStrategy Inc. 103


Functions Reference

Where:
The arguments must be metrics.
Example
This simple example illustrates how data is returned by the Least function.
Given two values lists, the function compares the values at each position in the lists and
returns a list of the lowest values from each position.

List 1 List 2 Result List

21 50 21
18 3 3
42 22 22

30 6 6
7 20 7

Level
Level is a shortcut function, available for various features in MicroStrategy Web, that
allows you to easily define the level (dimensionality) of the final metric expression. The
level of a metric determines the conceptual level at which a calculation is performed. For
example, rather than just calculating your revenue, you want to specify that a metric
always calculates yearly revenue. For additional information on when to create level
metrics, see the Advanced Reporting Guide.
Once you select the Level shortcut function, you can then select the group function for
the calculation, such as Sum or Max. Additionally, the options to add and remove levels
are displayed:
Report Level is the default level. If you remove Report Level as a level of the metric,
you can add it back by typing Report Level in the level text field.
To add a level to the metric, click the Browse icon ( ) to select an attribute.
To remove a level from a metric, click the Delete icon ( ).
You can also define how levels are evaluated:
To define the level options, for each level, click the Level options icon ( ).

Drop-down List Level Options

From the Relationship To include only data that meets the conditions in the report filter in the
with Report Filter metric calculation, select Standard filtering.
drop-down list, you can
define how the report

104 2017, MicroStrategy Inc.


Functions Reference

Drop-down List Level Options

filter affects the metric


calculation. To raise the level of the report filter to the level of the target, if possible,
then apply the report filter to the metric calculation, select Absolute
filtering. For example, the report filter contains the Washington, DC,
Boston, and New York call centers, but the Revenue metric is calculated at
the Region level. Because Call Center is a child attribute of Region, the
report filter's level is raised to the Region level, and the report filter is
treated as if it includes the regions that contain Washington, DC, Boston,
and New York (in this case, Mid-Atlantic and Northeast). Data from all call
centers in the Mid-Atlantic or Northeast regions are included in the metric
calculation, including call centers that are not Washington, DC, Boston, or
New York.
To ignore any conditions in the report filter that are based on the target
attribute, as well as any parent or child attributes of the target, select
Ignore filtering. For example, if you have a regional revenue metric on
a report, any conditions based on Country, Region, or Call Center in the
report filter are ignored when calculating the metric. However, a condition
based on Year would not be ignored, since Year is not directly related to
Region.
To allow the target and group components of the level to define the filter,
select None .
From the Metric To group data in the metric by the attribute level of the target, select
Aggregations drop- Standard.
down list, you can
determine how the To exclude the target attribute from being used to group data in the metric,
metric is grouped, or select None . Any children of the target attribute are also excluded. This
aggregated, when option is available for metrics calculated at a set level, as opposed to the
displayed on a report. report level.
The following options are only used for nonaggregatable metrics. A
nonaggregatable metric, such as an inventory metric, is one that should not
be aggregated across an attribute. For example, if you have monthly
inventory numbers in your data warehouse and want to calculate the yearly
inventory, adding the monthly numbers together does not provide a useful
business measure. Instead, you may want to use the end-on-hand and
beginning-on-hand inventory numbers to see how the total inventory
changed during the year. The following options are available:
To use the first value in the lookup table, select Beginning lookup.
To use the last value in the lookup table, select Ending lookup.
To use the first value in the fact table, select Beginning fact.
To use the last value in the fact table, select Ending fact.

To define the advanced level options, such as whether to apply the metric filter to
the metric calculation, click Level advanced options:
Allow other users to add extra units to this definition: This option is
used to emulate MicroStrategy 6.x behavior and affects only those projects that
have been upgraded from 6.x. Clear the check box only if your project was
upgraded from MicroStrategy 6.x. This option is selected by default.

2017, MicroStrategy Inc. 105


Functions Reference

Include filter attributes which are not in report or level in metric


calculation: Determine whether to apply the metric filter when the metric is
calculated. If this option is cleared, filter attributes that are not on the report or
in the level of the metric are not included in the metric calculation. This options
lets you determine which parts of the metric filter are applied based on the data
that has been included on the report. This option can help you re-use the same
metric in multiple reports, eliminating the need to create and maintain multiple
metrics, particularly if the metric and filter qualifications are complex. For an
example, including an explanation of how the report SQL is affected by this
option, see the Advanced Reporting Guide. This option is selected by default.

Max (maximum)
Max returns the largest value in a list of values. For example, it can be used on a list of
prices to determine the maximum cost of an item. This is a group-value function.

To compare the highest values in multiple lists of values, use the Greatest
function.

Syntax
Max <FactID, UseLookupForAttributes>(Argument)
Where:
Argument is an attribute, fact or metric representing a list of numbers.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.
Example
This example shows a report displaying the cost range of items within a subcategory. The
Max function is used to determine the highest cost of an item within a subcategory. The
metric, Maximum Unit Cost, is defined as follows:
Maximum([Unit Cost]) {~}
The metric is placed on a report with the attributes Category and Subcategory and the
metric Minimum Unit Cost. The resulting report appears as follows:

106 2017, MicroStrategy Inc.


Functions Reference

Median
Median returns the value in the middle of a set of listed values. The result will be greater
than half the values in the list and less than the other half. The median can be used as an
alternative to the arithmetic mean when handling values that are not evenly distributed
or contain outliers. This is a group-value function.
Syntax
Median <FactID>(Argument}
Where:
Argument is an attribute, fact or metric representing a list of numbers.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Usage notes
This function provides a location measure: the value returned has a relative position with
regard to other values in the list. Mode is another function that provides a location
measure.
Example

2017, MicroStrategy Inc. 107


Functions Reference

This example shows a report built to obtain the median age of employees within each
region. The report includes the attributes Region, Employee, and Employee Age, and the
metric Median Age. A report filter limits the regions displayed to Mid Atlantic,
Northeast, and Southeast. The metric Median Age is defined as follows:
Median([Employee Age){Region,~}
The function evaluates the list of employee ages within a region and selects a value in the
middle of the value list.

For another example of using the Median function, see Example 2: Median, page 24.

Min (minimum)
Min returns the lowest value in a list of values. For example, it can be used on a list of
prices to determine the minimum cost of an item. This is a group-value function.

To compare the lowest values in multiple lists of values, use the Least function.

Syntax
Min <FactID, UseLookupForAttributes>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.

108 2017, MicroStrategy Inc.


Functions Reference

Example
This example shows a report displaying the cost range of items within a subcategory. The
Min function is used to determine the lowest cost of an item within a subcategory. The
metric Minimum Unit Cost is defined as follows:
Minimum([Unit Cost]) {~}
The metric is placed on a report with the attributes Category and Subcategory and the
metric Maximum Unit Cost.

Mode
Returns the most frequently occurring value in a given list. This is a group-value
function.
Syntax
Mode <FactID, IsRemovable>(Argument)
Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.

2017, MicroStrategy Inc. 109


Functions Reference

IsRemovable is a parameter that determines whether the Mode of a single value


returns that value or a NULL value, as described below:
IsRemovable=True returns the single value as the result of the Mode
function. For example, Mode<IsRemovable=True>(4) would return the
value 4.
IsRemovable=False returns a NULL value as the results of the Mode function
when a single value is supplied. For example, Mode<IsRemovable=False>
(4) would return NULL.
If multiple values are supplied to the Mode function, the IsRemovable parameter
has no effect on the result of the Mode function.
Argument is an attribute, fact, or metric representing a list of numbers.
Usage notes
This function provides a location measure: the value returned has a relative position
with regard to other values in the list. Median is another function that provides a
location measure.
Returns a NULL if there are no recurring values in the range or list.
Example
This example shows a report that retrieves the mode of the unit cost for items in a
subcategory. The report returns the most frequently repeated unit cost within the various
subcategories, and, in the cases of Electronics, TVs, and Video Equipment, it returns a
NULL value, because there are no recurring unit cost values for them. The report
contains the attributes Category and Subcategory, and the metric Mode Unit Cost. A
report filter limits the categories displayed to Books and Electronics. The Mode Unit Cost
metric is defined as follows:
Mode([Unit Cost])

The formula listed above uses the Unit Cost fact rather than the Unit Cost metric.

110 2017, MicroStrategy Inc.


Functions Reference

Multiply
Multiply returns the product of two or more values. This function differs from the
Product function (see Product, page 111), which returns the product of values in a
single value list. The Multiply function can take multiple metrics as inputs and
multiply the values of the metrics.
You can also construct these types of metrics using the times operator (see Times (*),
page 242) rather than the Multiply function.
Syntax
Multiply(Argument1, Argument2,..., ArgumentN)
Where:
The arguments must be metrics or constants.
Example
In the report shown below, the Unit Profit metric uses the formula Multiply([Unit
Price],[Units Sold]) to return the revenue for each item. This report was created
in the MicroStrategy Tutorial project.

Product
Multiplies all values in a list. This is a group-value function.
Syntax
Product<FactID>(Argument)
Where
Argument is an attribute, fact, or metric representing a list of numbers.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Example

2017, MicroStrategy Inc. 111


Functions Reference

Given a value list containing the values (1,2,3,4), the product calculates as 1*2*3*4 = 24.

StDevP (standard deviation of a population)


The standard deviation is a value which shows how widely values in a population differ
from the mean. It is useful for comparing different sets of values with a similar mean.
StDevP returns the standard deviation of a population represented by list of values. It is
a group-value function.
Syntax
StDevP <FactID >(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.
Expression

Usage notes
For this function, arguments correspond to an entire population as opposed to a
population sample. For population samples, see StDev (standard deviation of a
sample), page 113.
When very large population samples are used, this function and the StDev (standard
deviation of a sample), page 113 function return approximately equal results.
Example
This example shows a report where the standard deviation of the revenue is calculated.
This calculation is based on the assumption that the list of values supplied in the metric
represents the entire population of the data for which you want to obtain the standard
deviation. The calculation is based on the revenue values for each state within a region
and calculated at the region level.

Compare this example report to the example for StDev to see the different values
returned when calculating for a population as opposed to a sample.

The report contains the attributes Customer Region and Customer State, and the metrics
Total Revenue and StDevP. A report filter limits the regions displayed to South,
Northwest, and Southwest. The definition of the StDevP metric is as follows:

112 2017, MicroStrategy Inc.


Functions Reference

StDevP([Total Revenue]){[Customer Region], ~}

StDev (standard deviation of a sample)


The standard deviation is an indicator of how widely values in a group differ from the
mean. It is useful for comparing different sets of values with a similar mean.
StDev returns the standard deviation of a population based on a sample. This is a group-
value function.
Syntax
StDev <Distinct, FactID>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
Distinct is a TRUE/FALSE parameter that allows you to calculate using all values
in the list or only the unique values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.
Expression

2017, MicroStrategy Inc. 113


Functions Reference

Usage notes
In this function, arguments correspond to a population sample as opposed to the
entire population. For entire populations, see StDevP (standard deviation of a
population), page 112.
To perform a weighted standard deviation, see WeightedStDev (weighted standard
deviation of a sample), page 202.
When very large population samples are used, this function and the StDevP
(standard deviation of a population), page 112 function return approximately equal
results.
Example
This example shows a report where the standard deviation of the revenue is calculated.
This calculation is based on the assumption that the list of values supplied in the metric
represents a sample of the data for which you want to obtain the standard deviation. The
calculation is based on the revenue values for each state within a region and calculated at
the region level.

Compare this example report to the example for StDevP to see the different values
returned when calculating for a population as opposed to a sample.

The report contains the attributes Customer Region and Customer State, and the metrics
Total Revenue and StDev. A report filter limits the regions displayed to South,
Northwest, and Southwest. The definition of the StDev metric is as follows:
StDev([Total Revenue]){[Customer Region], ~}

114 2017, MicroStrategy Inc.


Functions Reference

Sum
Returns the sum of all numbers in a list of values. This function is commonly used in
metrics and subtotals. Sum is a group-value function.
Syntax
Sum <Distinct, FactID, UseLookupForAttributes>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
Distinct is a TRUE/FALSE parameter that allows you to calculate using all values
in the list or only the unique values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.
Example
In this example, the metric Regional Revenue is defined as follows:
Sum(Revenue) {[Customer Region], ~}
This simple report uses the attributes Customer Region and Customer State, and the
metrics Revenue and Regional Revenue to generate a report showing the sum of the

2017, MicroStrategy Inc. 115


Functions Reference

revenue for several regions. A report filter limits the regions displayed to Northeast,
Northwest, and Southeast.

Transformation
Transformation is a shortcut function, available for various features in MicroStrategy
Web, that allows you to easily define transformations for the final metric expression.
Transformations allow you to apply an attribute-element based offset to compare metric
data. For example, a transformation metric can help a user compare last month's
revenue to this month's revenue. Although transformations can be applied to any
attribute hierarchy, the Time hierarchy is used most often. For the Time hierarchy, the
offset can be set as a fixed number of days, weeks, months, or years. For additional
information on when to create transformation metrics, see the Advanced Reporting
Guide.
Once you select the Transformation shortcut function, you can then select the group
function for the calculation, such as Sum or Max. Additionally, the options to add or
remove a transformation are displayed:
To add a transformation to the metric, click the Browse icon ( ) to select a
transformation.
To remove a transformation from a metric, click the Delete icon ( ).

VarP (variance of a population)


Variance is a measure of how spread out a set of values is.
VarP returns this measure based on an entire population. This is a group-value function.
Syntax
VarP <FactID>(Argument)
Where:

116 2017, MicroStrategy Inc.


Functions Reference

Argument is an attribute, fact, or metric representing a list of numbers.


FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

Usage notes
For this function, arguments relate to an entire population as opposed to a population
sample.
Example
Variance is calculated as the average squared deviation of each number from its mean.
This example creates a report in which the variance of the units sold in the subcategories
within a category is calculated with the assumption that the data provided represents the
entire population.

Compare this example report to the example for variance of a sample to see the
different values returned when calculating for a population as opposed to a sample.

The report includes the attributes Category and Subcategory, and the metrics Units Sold
and VarP by Category. A report filter limits the categories displayed to Books and Movies.
The VarP by Category metric is defined as follows:
VarP([Units Sold]) {Category, ~}

2017, MicroStrategy Inc. 117


Functions Reference

Var (variance of a sample)


Variance is a measure of how spread out a set of values is. It is calculated as the average
squared deviation of each number from its mean.
This function calculates the variance based on a sample of a population. This is a group-
value function.
Syntax
Var <Distinct, FactID>(Argument)
Where:
Argument is an attribute, fact, or metric representing a list of numbers.
Distinct is a TRUE/FALSE parameter that allows you to calculate using all values
in the list or only the unique values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

Usage notes
Assume when using this function that arguments constitute a population sample, as
opposed to a entire population.
Example
This example creates a report in which the variance of the units sold in the subcategories
within a category is calculated, with the assumption that the data provided is a sample.

Compare this example report to the example for variance of a population to see the
different values returned when calculating for a population as opposed to a sample.

The report includes the attributes Category and Subcategory, and the metrics Units Sold
and Var by Category. A report filter limits the categories displayed to Books and Movies.
The Var by Category metric is defined as follows:
Var([Units Sold]) {Category, ~}

118 2017, MicroStrategy Inc.


Functions Reference

Date and time functions


This section describes the date and time functions. These functions are not supported by
the Analytical Engine, so they must be calculated by the database.
The MicroStrategy Analytical Engine does not calculate date and time functions. If your
database does not include SQL syntax support for a date and time function, the function
cannot be calculated in your environment. For information on whether your database
supports various date and time functions, see Appendix A, MicroStrategy and Database
Support for Functions.

The results returned by the date/time functions may differ depending on the way
your database stores and interprets dates, for example, whether Monday is
considered the first or second day of the week.

AddDays
AddDays is used to calculate dates that occur N days before or after a given date. It
returns this information in the form of a date or timestamp.
Syntax
AddDays(Date/Time,Offset)
Where:
Date/Time is the input date or timestamp.
Offset is an integer number of days to add.
For information on whether your database supports various date and time functions, see
the Appendix A, MicroStrategy and Database Support for Functions.
Example
AddDays('2004-07-29', 4) = 2004-08-02

2017, MicroStrategy Inc. 119


Functions Reference

AddDays('2004-07-29 02:00:00', 4) = 2004-08-02 02:00:00


AddDays('2004-03-01', -4) = 2004-02-26

AddMonths
AddMonths is used to calculate dates that occur N months before or after a given date. It
returns this information in the form of a date or timestamp.
If the new date does not occur in the new month, the last date of the new month is
returned.
Syntax
AddMonths(Date/Time,Offset)
Where:
Date/Time is the input date or timestamp.
Offset is an integer number of months to add.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
AddMonths('2004-07-29', 3) = 2004-10-29
AddMonths('2004-07-29 10:00:00', 3) = 2004-10-29 10:00:00
AddMonths('2003-03-31', -1) = 2003-02-28

CurrentDate
Returns the current date as provided by the database timer.

This function does not take input variables.

Syntax
CurrentDate()
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.

CurrentDateTime
Returns the current date and time as provided by the database timer.

This function does not take input variables.

Syntax
CurrentDateTime()

120 2017, MicroStrategy Inc.


Functions Reference

For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.

CurrentTime
Returns the current time as provided by the database timer.

This function does not take input variables.

Syntax
CurrentTime()
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.

Date
Returns only the date portion of the date-time column. The time is truncated, not
rounded.
Syntax
Date(Date/Time)
Where:
Date/Time is the input date or timestamp.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 2004-07-29; output is the date 2004-07-29.
Input is the date-time 2004-07-29 02:00:00; output is the date 2004-07-29.

DateDiff
DateDiff is used to calculate the length of time between two dates. A numeric value is
returned.
Syntax
DateDiff<firstWeekDay>(Date1, Date2, Unit)
Where:
Date1 and Date2 are the inputs used for date or timestamp values. You can use
metrics, constants, attribute forms, or functions that result in a date or timestamp.
For example, you can include CurrentDate() as an input to compare historical dates
from an attribute form to the current date.

2017, MicroStrategy Inc. 121


Functions Reference

Unit is the unit of time that is to be measured. You can return the length of time in
one of the following units:

Unit of time Value in the function expression

Seconds s
Minutes mn
Hours h
Days d
Weeks w
Months m
Quarters q
Years y

firstWeekDay (default value is 1) is a parameter that can be used if you are


returning the length of time in weeks. This parameter determines which day of the
week is considered as the first day of the week, so that the difference in weeks can be
accurately determined. You can type an integer value from 1 to 7, with 1 representing
Sunday, 2 representing Monday, and so on until 7 representing Saturday.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
You can use DateDiff to create a metric or attribute form that lists the length of time
between two dates. One common way to do this is to compare the date information you
have stored to the current date. Consider a report or dashboard that includes a Day
attribute with a single ID form. You can create a metric with the following definition:
DateDiff(Day@ID, CurrentDate(), d)
For each element of the Day attribute, the metric displays the number of days between
that date and the current date when running the report or dashboard.

When using the DateDiff function in MicroStrategy Web, you will need to replace
the Day@ID attribute in the function definition. Create the metric [MAX
(Day@ID)] and define the function as follows: DateDiff([MAX(Day@ID)],
CurrentDate(), d)

DayofMonth
Returns a number corresponding to the day of the month of the date provided. The value
returned is an integer between 1 and 31.
Syntax
DayofMonth(Argument)

122 2017, MicroStrategy Inc.


Functions Reference

Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 7/11/2002; output is the integer 11.
Input is the date 2003/10/10; output is the integer 10.

DayofWeek
Returns the number of the day in the week corresponding to the input date. The return
value is an integer between 1 and 7. The value of 1 represents Sunday and the value of 7
represents Saturday.
Syntax
DayofWeek(Argument)
Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 5/16/2003; output is the integer 6, which represents Friday.
Input is the date 2003/9/9; output is the integer 3, which represents Tuesday.

DayofYear
Returns the number of the day in the year of the input date. The return value is an
integer between 1 and 365.
Syntax
DayofYear(Argument)
Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 1/16/2003; output is the integer 16.
Input is the date 2/17/2003; output is the integer 48.

2017, MicroStrategy Inc. 123


Functions Reference

DaysBetween
Returns the difference in days between two given dates as an integer value. The
calculation of the difference is based on the number of day boundaries crossed, not the
number of twenty-four hours periods elapsed. If the first date argument is later than the
second date argument, the result is a negative number. The result does not display the
time stamps, as they are truncated before performing the calculation.
Syntax
DaysBetween(Date/Time1, Date/Time2)
Where:
Date/Time1 is the start date.
Date/Time2 is the end date.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Examples
Inputs are the dates 2004-07-29 and 2004-07-25; output is the integer -4.
Inputs are the dates 2004-07-29 02:00:00 and 2004-07-31 01:00:00; output is
the integer 2.

FiscalMonth
Returns the numeric position of a month within a fiscal year, for a given input date. This
function is useful in financial reporting when the start of the fiscal year is different than
the start of the calendar year.
Syntax
FiscalMonth<firstMonth>(Date/Time)
Where:
Date/Time is the input date or timestamp.
firstMonth (default value is 1) is a parameter that determines which month is
considered as the start of the fiscal year. You can type an integer value from 1 to 12,
with 1 representing January, 2 representing February, and so on until 12
representing December.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Consider a report or dashboard that includes a Day attribute with a single ID form. You
can create a metric with the following definition:
FiscalMonth<firstMonth=4>(Day)

124 2017, MicroStrategy Inc.


Functions Reference

For each element of the Day attribute, the metric displays the numeric position of the
month within the fiscal year for that date. For this example, since the fiscal year starts in
April, a date of July 4, 2014 would return 4. This is because July is the fourth month in
the fiscal year.

FiscalQuarter
Returns the numeric position of a quarter within a fiscal year, for a given input date. This
function is useful in financial reporting when the start of the fiscal year is different than
the start of the calendar year.
Syntax
FiscalQuarter<firstMonth>(Date/Time)
Where:
Date/Time is the input date or timestamp.
firstMonth (default value is 1) is a parameter that determines which month is
considered as the start of the fiscal year. You can type an integer value from 1 to 12,
with 1 representing January, 2 representing February, and so on until 12
representing December.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Consider a report or dashboard that includes a Day attribute with a single ID form. You
can create a metric with the following definition:
FiscalQuarter<firstMonth=7>(Day)
For each element of the Day attribute, the metric displays the numeric position of the
quarter within the fiscal year for that date. For this example, since the fiscal year starts in
July, a date of October 13, 2014 would return 2. This is because October is in the second
quarter of the fiscal year.

FiscalWeek
Returns the numeric position of a week within a fiscal year, for a given input date. This
function is useful in financial reporting when the start of the fiscal year is different than
the start of the calendar year.
Syntax
FiscalWeek<firstWeekDay, firstMonth>(Date/Time)
Where:
Date/Time is the input date or timestamp.
firstWeekDay (default value is 1) is a parameter that determines which
day of the week is considered as the first day of the week. You can type an

2017, MicroStrategy Inc. 125


Functions Reference

integer value from 1 to 7, with 1 representing Sunday, 2 representing


Monday, and so on until 7 representing Saturday.
firstMonth (default value is 1) is a parameter that determines which month is
considered as the start of the fiscal year. You can type an integer value from 1 to 12,
with 1 representing January, 2 representing February, and so on until 12
representing December.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Consider a report or dashboard that includes a Day attribute with a single ID form. You
can create a metric with the following definition:
FiscalWeek<firstWeekDay=1, firstMonth=7>(Day)
For each element of the Day attribute, the metric displays the numeric position of the
week within the fiscal year for that date. For this example, since the fiscal year starts in
July, a date of July 8, 2014 would return 2. This is because the first fiscal week runs from
July 1st through July 5th. Then on July 6th, the first Sunday of the fiscal year, the second
fiscal week starts. This week includes July 8th, and so 2 is returned.

FiscalYear
Returns the fiscal year of the input date. This function is useful in financial reporting
when the start of the fiscal year is different than the start of the calendar year.
When determining the fiscal year, the year returned is the year in which the fiscal year
ends. For example, if a fiscal year runs from March 1, 2014 through April 30, 2015, the
fiscal year is 2015.
Syntax
FiscalYear<firstMonth>(Date/Time)
Where:
Date/Time is the input date or timestamp.
firstMonth (default value is 1) is a parameter that determines which month is
considered as the start of the fiscal year. You can type an integer value from 1 to 12,
with 1 representing January, 2 representing February, and so on until 12
representing December.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Consider a report or dashboard that includes a Day attribute with a single ID form. You
can create a metric with the following definition:
FiscalYear<firstMonth=2>(Day)

126 2017, MicroStrategy Inc.


Functions Reference

For each element of the Day attribute, the metric displays the fiscal year for that date. A
date of July 4, 2013 would have a fiscal year of 2014.

Hour
Returns the integer value for the hour of the input time. The return value is an integer
between 0 and 23.
Syntax
Hour(Argument)
Where:
Argument is a metric representing a list of dates and times.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the time 9:45 am; output is the integer 9.
Input is the time 11:10 pm; output is the integer 23.

Millisecond
Returns the integer value for the millisecond of the input time.
Syntax
Millisecond(Argument)
Where:
Argument is a metric representing a list of dates and times.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.

Minute
Returns the integer value for the minute of the input time. The return value is an integer
between 0 and 59.
Syntax
Minute(Argument)
Where:
Argument is a metric representing a list of dates and times.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example

2017, MicroStrategy Inc. 127


Functions Reference

Input is the time 9:45 am; output is the integer 45.


Input is the time 11:10 pm; output is the integer 10.

Month
Returns the number of the month in the year of the input date. The return value is an
integer between 1 and 12.
Syntax
Month(Argument)
Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 5/16/2003; output is the integer 5.
Input is the date 2003/9/3; output is the integer 9.

MonthEndDate
Returns the date of the last day of the month in which a date or timestamp occurs.
Syntax
MonthEndDate(Date/Time)
Where:
Date/Time is the input date or timestamp.
For information on whether your database supports various date and time functions,see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 2004-07-29; output is the date 2004-07-31.

MonthStartDate
Returns the date of the first day of the month in which a date or timestamp occurs.
Syntax
MonthStartDate(Date/Time)
Where:
Date/Time is the input date or timestamp.

128 2017, MicroStrategy Inc.


Functions Reference

For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 2004-07-29; output is the date 2004-07-01.

MonthsBetween
Returns the difference in months between two dates as an integer value. The difference
is calculated by the number of months elapsed and not by the number of month
boundaries crossed. If the first date argument is later than the second date argument, the
result is a negative number. The result does not display the timestamps, as they are
truncated before performing the calculation.
Syntax
MonthsBetween(Date/Time1, Date/Time2)
Where:
Date/Time1 is the start date.
Date/Time2 is the end date.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Inputs are the dates 2004-07-29 and 2004-02-28; output is the integer -5.
Inputs are the dates 2004-07-29 and 2004-09-29; output is the integer 2.

Quarter
Returns the number of the quarter in the year of the input date. The return value is an
integer between 1 and 4.
Syntax
Quarter(Argument)
Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 5/16/2003; output is the integer 2.
Input is the date 2003/9/3; output is the integer 3.

2017, MicroStrategy Inc. 129


Functions Reference

QuarterStartDate
Returns the date of the first day of the quarter in which a date or timestamp occurs.
Syntax
QuarterStartDate<firstMonth>(Date/Time)
Where:
Date/Time is the input date or timestamp.
firstMonth (default value is 1) is a parameter that determines which months are
considered as the first months of each quarter. You can type an integer value from 1
to 12, with 1 representing January, 2 representing February, and so on until 12
representing December. Defining one month automatically defines the first month
for the other quarters as well. For example, if you specify January as the first month,
April, July, and October are also considered as the first month of quarters.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Consider a report or dashboard that includes a Day attribute with a single ID form. You
can create an attribute form with the following definition:
QuarterStartDate<firstMonth=1>(Day)
For each element of the Day attribute, the new attribute form displays the start date of
the quarter.

Second
Returns the integer value for the second of the input time. The return value is an integer
between 0 and 59.
Syntax
Second(Argument)
Where:
Argument is a metric representing a list of dates and times.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the time 9:45:13 am; output is the integer 13.
Input is the time 11:10:47 pm; output is the integer 47.

130 2017, MicroStrategy Inc.


Functions Reference

ToDateTime (convert string or number to a date or


timestamp)
The ToDateTime function converts a string of characters or a number into a date or
timestamp.
Syntax
ToDateTime<Pattern=null>(Argument)
Where:
Argument is a fact, metric, column, or constant value that provides the strings that
are converted to numeric values.
Pattern is a parameter that determines the date or timestamp format used for the
resulting date or timestamp. By default, dates are expected to be of the format
mm/dd/yyyy. When providing a pattern, enclose the pattern in double quotes ("").
For example:
ToDateTime<pattern="mm/dd/yyyy">(Day@ID)
To specify a pattern, you can use custom formatting symbols that conform to the
standards of the International Components for Unicode. For information about the
custom formatting standards and syntax, see http://userguide.icu-
project.org/formatparse/datetime.
Example
ToDateTime<pattern="mm/dd/yyyy">(Day@ID)
This example would return the data stored for the ID form of Day in a date format that
includes month, day, and year information.

Week
Returns the number of the week in the year of the input date. The return value is an
integer between 1 and 54.
Syntax
Week(Argument)
Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 5/16/2003; output is the integer 20.
Input is the date 2003/9/9; output is the integer 37.

2017, MicroStrategy Inc. 131


Functions Reference

WeekStartDate
Returns the date of the first day of the week in which a date or timestamp occurs.
Syntax
WeekStartDate<firstDay>(Date/Time)
Where:
Date/Time is the input date or timestamp.
firstDay (default value is 1) is a parameter that determines which day of the week
is considered as the first day of the week. You can type an integer value from 1 to 7,
with 1 representing Sunday, 2 representing Monday, and so on until 7 representing
Saturday.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Consider a report or dashboard that includes a Day attribute with a single ID form. You
can create an attribute form with the following definition:
WeekStartDate<firstDay=1>(Day)
For each element of the Day attribute, the new attribute form displays the start date of
the week.

Year
Returns the year of the input date. The return value is an integer between 1900 and
9999.
Syntax
Year(Argument)
Where:
Argument is a metric representing a list of dates.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 5/16/2003; output is the integer 2003.
Input is the date 2002/9/9; output is the integer 2002.

YearEndDate
Returns the date of the last day of the year in which a date or timestamp occurs.
Syntax

132 2017, MicroStrategy Inc.


Functions Reference

YearEndDate(Date/Time)
Where:
Date/Time is the input date or timestamp.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Example
Input is the date 2004-07-29; output is the date 2004-12-31.

YearStartDate
Returns the date of the first day of the year in which a date or timestamp occurs.
Syntax
YearStartDate(Date/Time)
Where:
Date/Time is the input date or timestamp.
For information on whether your database supports various date and time functions, see
Appendix A, MicroStrategy and Database Support for Functions.
Examples
Input is the date 2004-07-29; output is the date 2004-01-01.

Internal functions
The following are internal function types:
MicroStrategy Apply, or Pass-through, functions provide access to
functionality that is not standard in MicroStrategy but is available in many Relational
Database Management Systems (RDBMS). These MicroStrategy functions act as
containers for non-standard SQL expressions passed to your warehouse database.
The MicroStrategy Apply functions are listed below:
ApplyAgg defines simple metrics or facts using group-value aggregation
functions.
ApplyLogicdefines custom filters using comparison operators.
ApplyLogic defines custom filters using logical operators.
ApplyOLAP defines compound functions using database-specific OLAP functions
such as Rank and RunningSlope.
ApplySimple uses simple operators and functions like +, -, and * to perform
single-value operations at the database level.

2017, MicroStrategy Inc. 133


Functions Reference

Banding functions are used to differentiate displayed data on a report. You can
divide data into bands in the following ways:
Banding distributes the values into bands of equal size.
BandingC (banding count) distributes values into a specified number of bands.
BandingP (banding points) distributes values into bands based on specific
intervals of values.
Case functions return specified data based on the evaluation of user-defined
conditions.
Case evaluates multiple expressions until a condition is determined to be true,
then returns a corresponding value.
CaseV (case vector) evaluates a single metric and returns different values
according to the results.
Coalesce returns the value of the first non-null argument.

Apply (Pass-Through) functions


MicroStrategy Apply functions provide access to functions or syntactic constructs that
are not standard in MicroStrategy but are provided by various Relational Database
Management System (RDBMS) platforms.

MicroStrategy strongly advises against using Apply functions when standard


MicroStrategy functions can be used to achieve the same goal, because using
RDBMS functions effectively bypasses the validations and other benefits of
MicroStrategy products. Using Apply functions is recommended only when
corresponding functionality does not exist in MicroStrategy. When you need to use
an Apply function, MicroStrategy encourages you to submit an enhancement
request for inclusion of the desired feature in a future product release.

Syntax common to Apply functions


While each Apply function has its own syntax, the Apply functions share several
syntactic features:
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 1 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.

134 2017, MicroStrategy Inc.


Functions Reference

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 Customers first name, middle name, and last name, use ID or any other
single form.
For more general information on Apply functions as well as an example, see Apply (Pass-
through) functions, page 27.

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.

Depending on your MicroStrategy product and licensing, this function may not be
available.

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] {~+}

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.

2017, MicroStrategy Inc. 135


Functions Reference

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
ApplyComparison()
Example
ApplyComparison ("#0>#1", Store@ID,2)
For another example of the ApplyComparison function, see Example:
ApplyComparison used to check a prompted date, page 28.

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.

Depending on your MicroStrategy product and licensing, this function may not be
available.

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.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
ApplyOLAP()
Accepts only metrics as input.
Example

136 2017, MicroStrategy Inc.


Functions Reference

ApplyOLAP(RunningSlope(#0,#1), [Metric 1], [Metric 2])

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
formnot a form group. The engine ignores any definitions based on attribute
forms.

Consolidation
Custom group
Fact
Metric
Subtotal
Transformation
For information about consolidations, custom groups, metrics, and subtotals, see the
MicroStrategy Advanced Reporting Guide.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
ApplySimple()
Accepts facts, attributes, and metrics as input.
Examples of object creation

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

2017, MicroStrategy Inc. 137


Functions Reference

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.

Banding functions
Banding functions are used to group data on a report so that it is both more
comprehensible and aesthetically pleasing than when it is displayed as one contiguous
list. MicroStrategy provides different banding options for you to use, depending on how
you want to divide your data. The banding functions, their syntaxes, and examples are
listed below.

For information on banding functions in custom groups, see the Advanced


Reporting Guide.

Banding
This function maps metric values that fall within a certain range to a particular integer
band value. The range and band values are determined by the parameter input to the
function. For example, if 5,000 is the specified range, the dollar sales are shown in bands
of 0 - 5,000, 5,001 - 10,000, 10,001 - 15,000, and so on. Banding is a single-value
function.
Syntax
Banding <HasResidue>(Argument, StartAt, StopAt, Size)
Where:
Argument is a metric.
StartAt and StopAt are real numbers specifying the full range of the values to be
placed in bands.
Size is a real number indicating the width of each band.
HasResidue is a TRUE/FALSE parameter that defines whether an extra band is
created for all values that do not fall within the StartAt and StopAt values.

138 2017, MicroStrategy Inc.


Functions Reference

Defining HasResidue as TRUE allows the function to create an additional band


which is used to identify all values outside of the defined band range.
Usage notes
Values in the list that fall outside of the start and end values set in the function syntax
are assigned a band of 0 (zero) in the report interface.
Example
The following example shows how the Banding function acts on report data. In this case
the total revenue for each city is used to divide the report data into bands:
The highest total revenue is 405,367 (New York).
The lowest revenue is 668 (Cleveland).
The metric function syntax is as follows:
Banding([Total Revenue], 1, 410000, 20000)
Total Revenue is the metric, defined as Sum(Revenue), representing the list of
values acted on by the Banding function.
1 is the value at which banding begins.
410,000 is the value at which banding ends.
20,000 is the size of the range of values included in each band.

Only part of the resulting report is displayed here.

The result is that 21 bands are created, each encompassing a range of 20,000 dollars of
total revenue. To determine the number of bands, 410,000 is divided by 20,000 resulting
in 20.5 (rounded to nearest integer, 21). Each band is given an integer value of between 1
and 21.

2017, MicroStrategy Inc. 139


Functions Reference

BandingC (banding count)


BandingC returns metric data grouped into a specified number of bands and assigns
integer values to the resulting bands (for example, a total of 25,000 in dollar sales shown
in five equal bands). This is a single-value function.
Syntax
BandingC <HasResidue>(Argument, StartAt, StopAt,
BandCount)
Where:
Argument is a metric.
BandCount is a positive integer indicating the number of bands into which the total
is divided.
StartAt and StopAt are real numbers specifying the full range of the values to be
placed in bands.
HasResidue is a TRUE/FALSE parameter that defines whether an extra band is
created for all values that do not fall within the StartAt and StopAt values.

140 2017, MicroStrategy Inc.


Functions Reference

Defining HasResidue as True allows the function to create an additional band


which is used to identify all values outside of the defined band range.
Usage notes
Values that fall outside of the range indicated by the Start and Stop values are assigned a
band of 0 (zero).
Example
The following example shows how the BandingC function acts on report data. This
example uses the same set of values as the example for the Banding function. Using the
BandingC function, you can designate the number of bands created for the range of
values.
The metric function syntax is as follows:
BandingC([Total Revenue], 1, 410000, 25)
Where:
Total Revenue is the metric, defined as Sum(Revenue), representing the list of
values acted on by the BandingC function.
1 is the value at which banding begins.
410,000 is the value at which banding ends.
25 is the number of bands into which you want the values divided.

Only part of the resulting report is displayed here.

The result is that 20 bands of equal sizes are created. To determine the range of each
band, 410,000 is divided by 25 resulting in bands of 16,400. Each band is given an
integer value of between 1 and 25.

2017, MicroStrategy Inc. 141


Functions Reference

BandingP (banding points)


Returns metric data grouped into bands identified by user-specified boundary point
values (for example, 0 - 5,000, 5,000 - 20,000, 20,000 - 30,000). This function assigns
integer values to the resulting metric and allows you to create band intervals of varying
widths. This is a single-value function.
Syntax
BandingP <HasResidue>(Argument, Boundary1, Boundary2,...,
BoundaryN)
Where:
Argument is a metric.
Boundary1 through BoundaryN are real numbers indicating the cut-off value for
each band. Boundary1 is less than Boundary2, Boundary2 is less than
Boundary3, and so on.
HasResidue is a TRUE/FALSE parameter that defines whether an extra band is
created for all values that do not fall within the Boundary1 and BoundaryN values.

142 2017, MicroStrategy Inc.


Functions Reference

Defining HasResidue as TRUE allows the function to create an additional band


which is used to identify all values outside of the defined band range.
Example
The following example shows how the BandingP function acts on report data. This
example again uses the same data set as in the previous examples (Banding and
BandingC). Using the BandingP function, you can designate the boundaries for each
interval.
The metric function syntax is as follows:
BandingP([Total Revenue],
1,20000,40000,60000,80000,100000,410000)
Where:
Total Revenue is the metric, defined as Sum(Revenue), representing the list of
values acted on by the BandingP function.
All other values specify the boundaries of an interval. There are six intervals defined
as follows:
Band 1: 1 [Total Revenue] < 20000
Band 2: 20,000 [Total Revenue] < 40,000
Band 3: 40,000 [Total Revenue] < 60,000
Band 4: 60,000 [Total Revenue] < 80,000
Band 5: 80,000 [Total Revenue] < 100,000
Band 6: 100,000 [Total Revenue] 410,000

Only part of the resulting report is displayed here.

2017, MicroStrategy Inc. 143


Functions Reference

Case functions
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. When MicroStrategy queries the data warehouse, the software determines
which condition evaluates as true and then returns the value that the user has specified
that corresponds to that condition. The case functions, their syntaxes, and examples are
listed below.

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.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax

144 2017, MicroStrategy Inc.


Functions Reference

Case (Condition1, ReturnValue1,


Condition2,ReturnValue2,..., DefaultValue)
Where:
Condition1 is the first condition to evaluate. The condition can contain metrics,
comparison and logical operators, and constants.
ReturnValue1 is a constant or metric value to return if the Condition1
condition is TRUE.
Condition2 is the second condition to evaluate. The condition can contain
metrics, comparison and logical operators, and constants.
ReturnValue2 is a constant or metric value to return if the Condition2
condition is TRUE.
... represents any number of Conditions and Return Values that can be passed
through this function.
DefaultValue is the information to return if none of the other conditions are
TRUE.
Example
This example generates a report where if the revenue, represented by the Total Revenue
metric, is less than 300,000, the function returns a 0; if the revenue is less than
600,000, the function returns a 1; if revenue is any other value, the function returns a 2.
The case metric is defined as follows:
Case(([Total Revenue] < 300000), 0, ([Total Revenue] <
600000), 1, 2)

Difference between Case and If

2017, MicroStrategy Inc. 145


Functions Reference

The If function is very similar to the Case function. Each function takes a condition as
an argument and returns a value depending on whether the condition is true or not. The
Case function can evaluate multiple conditional arguments, while the If function can
only evaluate one condition. However, the If function can be evaluated by either the SQL
Engine or the Analytical Engine, while the Case function is evaluated only by the
Analytical Engine.

CaseV (case vector)


CaseV evaluates a single metric and returns different values according to the results. It
can be used to perform transformations on a metric. For example, if provided a list of
values ranging from 1 to 12, CaseV might return January for a value of 1, February for a
value of 2, etc. This is a single-value function.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
CaseV (Argument, Value1, Result1, Value2, Result2, ...,
DefaultResult)
Where:
Argument is the metric against which all values are compared.
Value1 is the first value (constant or metric) to be evaluated.
Result1 is the information to return (constant or metric) if the Value1 value is
equal to the value for the Metric.
Value2 is the second value (constant or metric) to be evaluated.
Result2 is the information to return (constant or metric) if the Value2 value is
equal to the value for the Metric.
... represents any number of Conditions and Return Values that can be passed
through this function.
DefaultResult is the information to return (constant or metric) if none of the
other values are Equal to the Metric.
Usage notes
The metric or argument in the CaseV expression is always held as a float. This means
that even if the value is 2, it is held as 2.00000; and therefore 2 and 2.00000 are never
considered equal. For this reason, it is best if you wrap the metric or argument in the
integer function, for example, CaseV(int(M1), 2, A,...).
Example
This simple example generates a report where if the Unit Profit for the item is 2, the
function returns a 200; if the Unit Profit for the item is 3, the function returns a 300; if
Unit Profit is any other value, the function returns a 1000000. Notice how a single

146 2017, MicroStrategy Inc.


Functions Reference

metric, Unit Profit, is evaluated against multiple numeric values. The report contains the
attribute Item and the metrics Unit Profit and CaseV. A report filter limits the items
displayed to those in the subcategory Action. The CaseV metric is defined as follows:
CaseV ([Unit Profit], 2, 200, 3, 300, 1000000)

Coalesce
Returns the value of the first non-null argument. Coalesce can be used to identify data
in tables that may not be fully populated or in metric definitions.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
Coalesce (Argument1, Argument2,..., ArgumentN)
Where:
The arguments for the Coalesce function can be any expression that can be evaluated
as null or not null.
Usage Notes
You can use the Coalesce function in defining a metric, but more often it is used with the
Query Builder feature to support the inclusion of the Coalesce function in SQL queries.
See the example below for more detailed information.
Example
Your database has two tables T1 and T2 that include the column MONTH_ID with the
format yyyymm. You want to filter on a specific month, but you are not sure which table

2017, MicroStrategy Inc. 147


Functions Reference

has been populated with month data. In the Query Builder Editor, you can filter your
SQL query by creating the condition Coalesce(T1.MONTH_ID, T2.MONTH_ID) =
200410. The WHERE clause of the SQL query checks for the first non-null MONTH_ID
column and compares it to the value 200410.
For more information on Query Builder, see the Advanced Reporting Guide.

NULL/Zero functions
The NULL/Zero functions are often used to determine how NULLs and zeros are
displayed on a report. They can also be used as a form of data validation to ensure
meaningful results. For example, an otherwise invalid mathematical expression such as 5
+ NULL can be changed to 5 + 0.

IsNotNull
Returns TRUE if value input is not NULL; otherwise, returns FALSE. This is a comparison
function.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
IsNotNull(Argument)
Where:
Argument is a fact or metric.
Usage notes
The IsNull and IsNotNull functions work only with the data returned from the database.
For example, if the database data is NULL, the IsNotNull function returns a FALSE.
However, you may see NULL data when you manipulate a report after its original
generation and that manipulation does not regenerate the data from the database. This
can happen when you page by, for example, and the result includes a NULL.

IsNull
Returns TRUE if the value is NULL; otherwise, returns FALSE. This is a comparison
function.

Depending on your MicroStrategy product and licensing, this function may not be
available.

Syntax
IsNull(Argument)
Where:
Argument is a fact or metric.

148 2017, MicroStrategy Inc.


Functions Reference

Usage notes
The IsNull and IsNotNull functions work only with the data returned from the database.
For example, if the database data is NULL, the IsNotNull function returns a FALSE.
However, you may see NULL data when you manipulate a report after its original
generation and that manipulation does not regenerate the data from the database. This
can happen when you page by, for example, and the result includes a NULL.

NullToEmpty
Converts a value of NULL to an empty string. If the value is not NULL, the original value
is kept.
Syntax
NullToEmpty(Argument)
Where:
Argument is metric or attribute form.
Example
You can use NullToEmpty when creating derived attributes to convert NULL values for
attribute elements to empty strings. For example, you can convert NULL values to empty
strings so that attribute element values can be successfully concatenated with functions
such as Concat (see Concat (concatenate), page 225) or ConcatBlank (see ConcatBlank
(concatenate plus blank space), page 226).
For steps to create derived attributes, see the MicroStrategy Web Help.

NullToZero
Converts a value of NULL to 0. If the value is not NULL, the original value is kept.
Syntax
NullToZero(Argument)
Where:
Argument is a fact or metric.
Example
In this simple example, the function NullToZero is applied to a list of values (12, NULL,
97, 43, NULL). The resulting list is (12, 0, 97, 43, 0). This function could be applied to a
value list before it is acted on by another function such as Average so that NULL values
in a list are included as list elements and factored into the average as zeros.

ZeroToNull
Converts a value of 0 to NULL. If the value is not 0, the original value is kept.
Syntax

2017, MicroStrategy Inc. 149


Functions Reference

ZeroToNull(Argument)
Where
Argument is a fact or metric.
Example
In this simple example, the function ZeroToNull is applied to a list of values (12, 0, 97,
43, 0). The resulting list is (12, NULL, 97, 43, NULL). This function could be applied to a
value list before it is acted on by another function such as Average so that zero values in
a list are not included as list elements and therefore not factored into the average.

OLAP functions
OLAP functions are also known as relative functions. They take multiple elements from a
list and return a new list of elements. The following applies to all OLAP functions:
SortBy is applied before the engine performs the calculation of an OLAP function.
In OLAP functions, the SortBy parameter can be either a metric or an attribute.
Many OLAP functions calculate measures useful for analyzing a set of values such as the
sum, average, and standard deviation. These functions fall into three groups depending
on how they select the window of values on which they base their calculations. These
groups are as follows:
Running: Functions with a running window include the current value and all
preceding values. For example, given the list (1, 2, 3, 4), RunningSum returns the
sums 1, 3, 6, and 10. This example is illustrated in the table below. These functions
include the word Running in their name, such as RunningAvg and
RunningStDev.
Moving: Functions with a moving window include the current value and a fixed
number of preceding values. For example, given the list (1,2,3,4) and a window size
of 2, MovingSum returns 1, 3, 5, and 7. This example is illustrated in the table below.
These functions include the word Moving in their name, such as MovingAvg and
MovingStDev.
OLAP: Functions with flexible windows allow you to set where windows begin and
end in relation to the current value. This feature allows you to include both
preceding and succeeding values in your calculations. For example, you can use
OLAPSum to include one value above and below the current row. This example is
illustrated in the table below. These functions include the word OLAP, such as
OLAPSum and OLAPAvg.
The following table lists a comparison of the example scenarios described above.

Values RunningSum MovingSum OLAPSum

1 1 (1) 1 (1) 3 (1+2)

150 2017, MicroStrategy Inc.


Functions Reference

Values RunningSum MovingSum OLAPSum

2 3 (1+2) 3 (1+2) 6 (1+2+3)


3 6 (1+2+3) 5 (2+3) 9 (2+3+4)
4 10 (1+2+3+4) 7 (3+4) 7 (3+4)

ExpWghMovingAvg (exponential weighted moving


average)
ExpWghMovingAvg allows you to place more or less emphasis on recent data than on
past data within a specified number of rows. It is calculated within the specified window
size and can restart based on an attribute specified in the function parameters.
Syntax
ExpWghMovingAvg <BreakBy, SortBy> (Argument, WindowSize,
Rate)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
WindowSize indicates the number of values to use in each calculation.
Rate is a positive real number specifying the base weight applied to each argument
value. In the calculation, exponents are sequentially applied to the rate value. Assign
a rate of less than one to give more emphasis to more recent data; assign a rate of
greater than 1 to give greater emphasis to past data.
Expression
Where:
k = row number
yi = metric value at the ith row

2017, MicroStrategy Inc. 151


Functions Reference

m = window size or the row number, whichever is smaller


n = number of rows
w = the base weight applied to each value, which is determined by the Rate value in
the function, as described in the function syntax details above

Rows with null values are excluded from the calculation.

Example
This example uses small numbers to demonstrate the calculation for the exponential
weighted moving average (ExpWghMovingAvg) function. For example, you have a list of
values (32, 8, 5), with 5 being the most recent value, and you assign a rate of .5 and a
window size of 2.

Values EWM Calculation


average

32 32 32(.5)0 / (.5)0 = 32(1)/1 = 32

8 16 8(.5)0 + 32(.5)1 / (.5)0 + (.5)1 =

8(1)+ 32(.5) / 1+.5 = 8+16 / 1.5 = 16


5 6 5(.5)0 + 8(.5)1 / (.5)0 + (.5)1 =

5(1)+ 8(.5) / 1+.5 = 5+4 / 1.5 = 6

As an additional example, the Human Resources Analysis Module project includes the
Division Breakdown report shown below.

152 2017, MicroStrategy Inc.


Functions Reference

A description of how the MovingAvg metric is used on the report is provided in


MovingAvg (moving average), page 163. You can also add an exponential weighted
moving average metric to this report to apply more or less emphasis to older data. For
example, you can create another derived metric named ExpWghMovingAvg with the
following expression:
ExpWghMovingAvg<BreakBy={Division}, SortBy=(Quarter)>
(Employees, 4.0, 0.5)
The rate of 0.5 changes the moving average to apply more significance, or weight, to
more recent data. This means that the number of Sales employees during the first
quarter (13) has less weight than the number of Sales employees in the fourth quarter
(18). When comparing MovingAvg and ExpWghMovingAvg for the Sales division, you
can see that the ExpWghMovingAvg is larger. This is because more significance is given
to more recent data, and the recent trend is that employment is on the rise. This is
shown in the report below.

Conversely, you can modify the same ExpWghMovingAvg metric to use the following
expression:
ExpWghMovingAvg<BreakBy={Division}, SortBy= (Quarter) >
(Employees, 4.0, 2)
The rate of 2 changes the moving average to apply more significance, or weight, to older
data. This means that the number of Sales employees during the first quarter (13) has
more weight than the number of Sales employees in the fourth quarter (18). When
comparing MovingAvg and ExpWghMovingAvg for the Sales division, you can see that
the ExpWghMovingAvg is smaller. This is because more significance is given to older
data, and employment was lower earlier in the year. This is shown in the report below.

2017, MicroStrategy Inc. 153


Functions Reference

ExpWghRunningAvg (exponential weighted running


average)
ExpWghRunningAvg allows you compute a running average while placing more or less
emphasis on recent data than on past data. The calculation can restart based on an
attribute specified in the function parameters.
Syntax
ExpWghRunningAvg <BreakBy, SortBy> (Argument, Rate)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
Rate is a positive real number specifying the base weight applied to each argument
value. In the calculation, exponents are sequentially applied to the rate value. Assign
a rate of less than one to give more emphasis to more recent data; assign a rate of
greater than 1 to give greater emphasis to past data.
Expression
Where:
k = row number
yi = metric value at the ith row

154 2017, MicroStrategy Inc.


Functions Reference

m = window size or the row number, whichever is smaller


n = number of rows
w = the base weight applied to each value, which is determined by the Rate value in
the function, as described in the function syntax details above

Rows with null values are excluded from the calculation.

Example
This example uses small numbers to demonstrate the calculation for the exponential
weighted running average (ExpWghRunningAvg) function. For example, you have a list
of values (32, 8, 5), with 5 being the most recent value, and you assign a rate of .5.

values EWR calculation


average

32 32 32(.5)0 / (.5)0 = 32(1)/1 = 32

8 16 8(.5)0 + 32(.5)1 / (.5)0 + (.5)1 =

8(1)+ 32(.5) / 1+.5 = 8+16 / 1.5 = 16


5 10 5(.5)0 + 8(.5)1 + 32(.5)2 / (.5)0 + (.5)1 +(.5)2 =
5(1)+ 8(.5)+ 32(.25) / 1+ .5 + .25 =
5 + 4 + 8 / 1.75 = 10 (rounded from 9.71)

FirstInRange
Returns the first value in a range of values. FirstInRange can be used to examine data
such as inventory at the beginning of each month.
Calculations can be restarted based on attributes set in the function parameters. This
restart capability differentiates FirstInRange from First. While First is a group-
value function and takes both facts and metrics as argument input, FirstInRange is an
OLAP function and takes only metrics as argument input.
Syntax

2017, MicroStrategy Inc. 155


Functions Reference

FirstInRange <BreakBy, SortBy> (Argument)


Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
Expression

Where:
k = row number
y1 = first non-NULL value of the metric after applying the BreakBy and SortBy
parameters
Example
This example shows the results of using the FirstInRange function. The report includes
the attributes Customer Region and Customer State and the metrics Profit and
FirstInRange. A report filter limits the regions displayed to Northwest, Southeast, and
Southwest. The FirstInRange metric is defined as follows:
FirstInRange<BreakBy={[Customer Region]}, SortBy=
([Customer State]) >(Profit)
In the following report, FirstInRange returns the first profit value in the list of Customer
States for each Customer Region.

156 2017, MicroStrategy Inc.


Functions Reference

Lag
The Lag function is useful to display a set of metric values in an order determined by
another metric or attribute on the report. This allows you to compare metric values side-
by-side. The easiest way to understand the Lag function is with an example, provided
below.
Syntax
Lag <BreakBy, SortBy> (Argument, Offset, DefaultValue)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is an attribute or metric representing a list of values. It is common to use
a metric for Argument.
Offset specifies the offset from the current row to display information for. This
offset trails behind the current row (you can use the Lead function to use an offset
that precedes ahead of the current row, see Lead, page 162). For example, with an
offset of two, row three displays data for the row two behind it, which would be row
one.
DefaultValue is the value displayed for any entries that do not have any data due
to the offset. For example, when using an offset of 2, the first two entries use the
default value.
Some common default values to display include:
0: To display a value of 0 for any entries that do not have any data due to the
offset, type 0.
No data: To display no data for any entries that do not have any data due to the
offset, type ZeroToNull(0).
Example
On a report with Item, Cost, and Profit, you can use the Lag function to create a Cost
(Lag on Profit) metric. This metric displays Cost values based on the descending sort
order of the Profit metric, and is defined with the following expression:
Lag<SortBy= (Profit Desc) >(Cost, 3.0, 0.0)
Notice that the offset is set to three, meaning that the display of cost values lags behind
by three entries. This is displayed in the report results shown below.

Only the top and the bottom of the report is shown. To view the entire report
results, you can create this report in the MicroStrategy Tutorial project.

2017, MicroStrategy Inc. 157


Functions Reference

The Cost (Lag on Profit) values are displayed three behind the Cost metric, and are
displayed based on the descending sort order of Profit. Notice that with an offset of
three, the first three entries for Cost (Lag on Profit) use the default value of zero. Also,
the last three values of Cost are not included in the Cost (Lag on Profit) metric.
The report has been sorted based on the Profit metric to make the Cost (Lag on Profit)
values easier to analyze.

Transformation-style analysis using the Lag and Lead functions


Transformation-style analysis can be supported using the Lag and Lead functions
provided with MicroStrategy. These functions can be used to define metrics that
compare values from different time periods without the use of transformations. For
information on creating transformations, see the Project Design Guide.

Note the following:

The examples shown below were created in the MicroStrategy Tutorial project.
The examples below use the Lag function. The Lead function can be used in the
same way. The difference in using Lead rather than Lag is that the Lead
function would display information by going forward in time rather than
backward. For example, while the Lag function can return historical data from
one year ago, the same formula used for the Lead function would return
historical data from one year ahead.
The Lead function does not predict future values. For functions that can
predict future values based on historical data, see ForecastV (forecast,

158 2017, MicroStrategy Inc.


Functions Reference

vector input), page 344, GrowthV (growth, vector input), page 348, and
TrendV (trend, vector input), page 370. Additionally, you can use data
mining functions from MicroStrategy Data Mining Services to predict future
trends, as described in Data mining functions, page 259.
For example, a Last Years Monthly Revenue metric can be created using the following
function:
Lag<SortBy=(Month@ID)>(Revenue,12,ZeroToNull(0))
This metric can then be included on a report with the Month attribute and the Revenue
metric, as shown below.

This allows you to perform a side-by-side comparison of monthly revenue for different
years. In this report, the 2007 monthly revenue is displayed next to the 2008 monthly
revenue. The element Jan 2009 is included to show that the Last Years Monthly
Revenue is displaying the monthly revenue from the previous year.
By modifying the offset of the Lag function, you can change the time periods that can be
compared side by side. For example, the function listed above uses an offset of 12, which
displays monthly data from one year ago. Using an offset of 3 would display monthly
data from three months ago, while using an offset of 24 would display monthly data from
two years ago. These slight modifications could be used to create separate metrics that
could all be included on the same report. The report below shows an example of
including three different metrics that use the same Lag formula with a different offset.

2017, MicroStrategy Inc. 159


Functions Reference

The report shown above allows side-by-side comparison of monthly revenue for three
different time periods. In this report, the Monthly Revenue 2 Years Ago metric displays
no data for months in the year 2008 because no revenue data exists for the year 2006.
To use the Lag or Lead functions for transformation-style analysis, the metric formulas
must be created to support the required reporting scenario. For example, the report with
the Month attribute and the Revenue metric has the Category attribute added to it. To
support this reporting scenario, you can modify the Lag formula described above to
include the Category attribute, as shown below.
Lag<BreakBy={Category},SortBy=(Month@ID)>
(Revenue,12,ZeroToNull(0))
Using the formula shown above, the calculation is restarted for each category, which
allows the side-by-side comparison of monthly revenue over time for each category, as
shown in the report below:

160 2017, MicroStrategy Inc.


Functions Reference

Only the Month attribute elements Jan 2007, Jan 2008, and Jan 2009 are displayed to
show that the Last Years Monthly Revenue (Category) metric is displaying the monthly
revenue from the previous year.

LastInRange
Returns the last value in a range of values. LastInRange can be used to examine data
such as inventory at the end of each month.
Calculations can be restarted based on attributes set in the function parameters. This
restart capability differentiates LastInRange from Last. While Last is a group-value
function and takes both facts and metrics as argument input, LastInRange is an OLAP
function and takes only metrics as argument input.
Syntax
LastInRange <BreakBy={}, SortBy=()> (Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
Expression

Where:
k = row number

2017, MicroStrategy Inc. 161


Functions Reference

yk = last non-NULL value of the metric after applying the BreakBy and SortBy
parameters

Lead
The Lead function is useful to display a set of metric values in an order determined by
another metric or attribute on the report. This allows you to compare metric values side-
by-side. The easiest way to understand the Lead function is with an example, provided
below.
Syntax
Lead <BreakBy, SortBy> (Argument, Offset, DefaultValue)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is an attribute or metric representing a list of values. It is common to use
a metric for Argument.
Offset specifies the offset from the current row to display information for. This
offset precedes ahead of the current row (you can use the Lag function to use an
offset that trails behind the current row, see Lag, page 157). For example, with an
offset of two, row one displays data for the row two ahead of it, which would be row
three.
DefaultValue is the value displayed for any entries that do not have any data due
to the offset. For example, when using an offset of 2, the last two entries use the
default value.
Some common default values to display include:
0: To display a value of 0 for any entries that do not have any data due to the
offset, type 0.
No data: To display no data for any entries that do not have any data due to the
offset, type ZeroToNull(0).
Example
For an example of using Lag and Lead functions to perform transformation-style
analysis, see Transformation-style analysis using the Lag and Lead functions, page 158.
On a report with Item, Cost, and Profit, you can use the Lead function to create a Cost
(Lead on Profit) metric. This metric displays Cost values based on the descending sort
order of the Profit metric, and is defined with the following expression:
Lead<SortBy= (Profit Desc) >(Cost, 3.0, 0.0)
Notice that the offset is set to three, meaning that the display of cost values is displayed
three ahead of the current value. This is displayed in the report results shown below.

162 2017, MicroStrategy Inc.


Functions Reference

Only the top and the bottom of the report is shown. To view the entire report
results, you can create this report in the MicroStrategy Tutorial project.

The Cost (Lead on Profit) values are displayed three ahead of the Cost metric, and are
displayed based on the descending sort order of Profit. Notice that with an offset of
three, the last three entries for Cost (Lead on Profit) use the default value of zero. Also,
the first three values of Cost are not included in the Cost (Lead on Profit) metric.
The report has been sorted based on the Profit metric to make the Cost (Lead on Profit)
values easier to analyze.

MovingAvg (moving average)


Returns the moving average of the current value and preceding values, as defined by the
WindowSize parameter. The calculations can be restarted based on attributes set in the
function parameters. This is an OLAP function.
Syntax
MovingAvg <BreakBy={}, SortBy=()> (Argument, WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.

2017, MicroStrategy Inc. 163


Functions Reference

WindowSize is a positive integer indicating the number of values to use in each


calculation.
Expression

Where:
yi = metric value at the ith row

m = window size
n = number of rows/metric values
Example
This simple example illustrates how the MovingAvg function calculates a list of values
and returns the average of a specified number of values. In this case, the window size is
set to 3, meaning that the value in the MovingAverage column represents the average of
the current value of the two values that precede it in the value list. The calculation is
shown in the following table.

Values MovingAverage

10 10 (10/1)
20 15 ((20+10) / 2)
30 20 ((30+20+10) / 3)
15 51.67 ((15+30+20) / 3)

5 16.67 ((5+15+30) / 3)
20 13.34 ((20+5+15) / 3)
40 21.67 ((40+20+5) / 3)

As an additional example, the Human Resources Analysis Module project includes the
Division Breakdown report shown below.

164 2017, MicroStrategy Inc.


Functions Reference

This report displays details about employee headcounts for each division, over the various
quarters of 2010. Included in this report is the metric MovingAvg. It is defined as a
derived metric, using the following expression:
MovingAvg<BreakBy={Division}, SortBy=(Quarter)>
(Employees, 4.0)
This expression calculates the moving average of employee headcount for a given
division, during the four quarters of 2010. The window size of 4.0 specifies that the
average is calculated across the four quarters, and BreakBy={Divison} ensures that
the moving average calculation is specific to each division.
Using this MovingAvg metric, you can determine that the Sales division had between
13.0 and 16.3 employees on average during the 2010 year, with slight increases
throughout the year.
For an extension of this example on how you can also use a weighted moving average,
see ExpWghMovingAvg (exponential weighted moving average), page 151.

MovingCount
Returns the moving count of a list of values. The calculation can be restarted based on
attributes set in the function parameters. This is an OLAP function.
Syntax
MovingCount <BreakBy={}, SortBy=()> (Argument,
WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.

2017, MicroStrategy Inc. 165


Functions Reference

Argument is a metric representing a list of values.


WindowSize is a positive integer indicating the highest number to use in the count.
Expression

Where:
yi = metric value at the ith row

m = window size
n = number of rows/metric values
1i = 1 if the value at the ith row is not NULL

1i = 0 otherwise

Usage Notes
If there are more entries in a section than the integer in the window size parameter,
then all the remaining entries are given the highest number in the count. For example, if
the window size is 4 and there are 6 entries in the list section, they are counted as
follows: 1,2,3,4,4,4.
Example
This simple example demonstrates how the MovingCount function counts rows of data.
This report uses the attributes Region and Employee, and the metrics Revenue and
Moving Count. A filter is applied so the only Regions displayed are South, Northwest, and
Southwest. The Moving Count metric is defined as follows:
MovingCount<BreakBy={Region}, SortBy= (Value) >(Revenue,
3.0)
The count restarts for every Region.
The entries are counted based on the value of the metric Revenue in ascending order
(the lowest value is counted as 1, next lowest is 2, and so on).
The highest number in the count is 3 as designated in the WindowSize parameter.

166 2017, MicroStrategy Inc.


Functions Reference

MovingDifference
Returns the moving difference between current and preceding values. The position of the
preceding row used in the calculation is defined in the function arguments. The
calculations can be restarted based on attributes set in the function parameters. This is
an OLAP function.
Syntax
MovingDifference <BreakBy, SortBy> (Argument, WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
WindowSize is a positive integer indicating the range of values used to compute
each difference.
Expression

Where:
yi = metric value at the ith row

m = window size
n = number of rows/metric values
Example
This example illustrates how the MovingDifference function subtracts the value of a
preceding row from the value of the current row and returns the difference. In this case,

2017, MicroStrategy Inc. 167


Functions Reference

the window size is set to 3, meaning that the value two rows previous to the current row
is subtracted from the current row. In other words, there are 3 rows in the window, the
current row is 3, the row immediately preceding it is 2, and the row preceding that is 1;
therefore, the calculation for the moving difference of row 3 is (row 3 - row 1).
The value in the MovingDifference column represents the result of the calculation for
every window of three values. The calculation is also shown.

Values MovingDifference

400
500
700 300 (700-400)
300 -200 (300-500)
600 -100 (600-700)

800 500 (800-300)


200 -400 (200-600)

MovingMax (moving maximum)


Returns the moving maximum value by comparing current and preceding rows as
defined in the function arguments. The calculation can be restarted based on attributes
set in the function parameters. This is an OLAP function.
Syntax
MovingMax <BreakBy, SortBy> (Argument, WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
WindowSize is a positive integer indicating the number of values to compare in
each calculation.
Expression

Where:
yi = metric value at the ith row

168 2017, MicroStrategy Inc.


Functions Reference

m = window size
n = number of rows/metric values
Example
This simple example illustrates how the MovingMaximum function moves through a list
of values, subtracting a value from the user-defined number of preceding rows. In this
case, the window size is set to 3, meaning that the value in the MovingMaximum column
represents the highest value among the current and preceding two values in the value
list. The calculation is shown in the following table.

Values MovingMaximum

550 550
30 550 (550>30)
40 550 (550>40 and 550>30)

70 70 (70>40 and 70>30)


50 70 (70>50 and 70>40)

MovingMin (moving minimum)


Compares the current value and preceding values as defined in the function arguments to
calculate a moving minimum value. The calculation can be restarted based on attributes
set in the function parameters. This is an OLAP function.
Syntax
MovingMin <BreakBy,SortBy>(Argument, WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
WindowSize is a positive integer indicating the number of values to use in each
calculation.
Expression

Where:
yi = metric value at the ith row

2017, MicroStrategy Inc. 169


Functions Reference

m = window size
n = number of rows/metric values
Example
This simple example illustrates how the MovingMin function moves through a list of
values returning the lowest value within a specified number of values. In this case, the
window size is set to 3, meaning that the value in the MovingMinimum column
represents the lowest value among the current and preceding two values in the value list.
The calculation is shown in the following table.

Values MovingMinimum

550 550
30 30 (30<550)
40 30 (30<40 and 30<550)

70 30 (30<70 and 30<40)


50 40 (40<70 and 40<50)

MovingStDevP (moving standard deviation of a


population)
Returns the moving standard deviation of a population based on a list of values that
encompasses the whole population. The calculation can be restarted based on attributes
set in the function parameters. This is an OLAP function.
Syntax
MovingStDevP <BreakBy, SortBy> (Argument, WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
WindowSize is a positive integer indicating the number of values to use in each
calculation.
Expression

170 2017, MicroStrategy Inc.


Functions Reference

Where:
yi = metric value at the ith row

y = average of metric
m = window size
n = number of rows/metric values
Example
This example shows a report where the moving standard deviation of the revenue is
calculated. This calculation is based on the assumption that the list of values supplied in
the metric represents the entire population of the data for which you want to obtain the
standard deviation. The calculation starts over for each region, the information is sorted
within the region by state in ascending order, and each calculation is based upon a
window size of 3.

Compare this example report to the example for MovingStDev to see the different
values returned when calculating for a population as opposed to a sample.

The report contains the attributes Customer Region and Customer State, and the metrics
Total Revenue, MovingStDevP, RunningStDevP, and StDevP. A report filter limits data to
the South, Southwest, and Northwest regions. The definition of the MovingStDevP
metric is as follows:
MovingStDevP<BreakBy={[Customer Region]}, SortBy=<
[Customer State])>([Total Revenue],3)

2017, MicroStrategy Inc. 171


Functions Reference

MovingStDev (moving standard deviation)


Returns the moving standard deviation based on a list of values that is a sample of the
population. The calculation can be restarted based on attributes set in the function
parameters. This is an OLAP function.
Syntax
MovingStDev <BreakBy, SortBy> (Argument, WindowSize)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of number.
WindowSize is a positive integer indicating the number of values to use in each
calculation.
Expression

Where:
yi = metric value at the ith row

172 2017, MicroStrategy Inc.


Functions Reference

y = average of metric
m = window size
n = number of rows/metric values
Example
This example shows a report where the moving standard deviation of the revenue is
calculated. This calculation is based on the assumption that the list of values supplied in
the metric represents a sample of the data for which you want to obtain the standard
deviation. The calculation starts over for each region, the information is sorted within
the region by state in ascending order, and each calculation is based upon a window size
of 3.

Compare this example report to the example for MovingStDevP to see the different
values returned when calculating for a population as opposed to a sample.

The report contains the attributes Customer Region and Customer State, and the metrics
Total Revenue, MovingStDev, RunningStDev, and StDev. A report filter limits data to the
Southwest, Southeast, and Northwest regions. The definition of the MovingStDev metric
is as follows:
MovingStDev<BreakBy={[Customer Region]}, SortBy=<
[Customer State])>([Total Revenue], 3)

MovingSum
Returns the moving sum of the current value and preceding values as defined in the
function arguments. The calculations can be restarted based on attributes set in the
function parameters. This is an OLAP function.
Syntax
MovingSum <BreakBy,SortBy>(Argument, WindowSize)
Where:

2017, MicroStrategy Inc. 173


Functions Reference

Argument is a metric representing a list of numbers.


BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
WindowSize is a positive integer indicating the number of values to sum in each
calculation.
Expression

Where:
yi = metric value at the ith row

m = window size
n = number of rows/metric values
Example
This simple example illustrates how the MovingSum function moves through a list of
values calculating and returning the sum of a specified number of values. In this case the
window size is set to 2 meaning that the sum in the MovingSum column represents the
current value added to the value from the value list that precedes it. The calculation is
shown in the following table.

Values MovingSum

10 10
20 30 (20+10)

30 50 (30+20)
15 45 (15+30)
5 20 (5+15)

OLAPAvg (OLAP average)


Returns the average of the current value, preceding values, and succeeding values as
defined in the function arguments. Unlike RunningAvg and MovingAvg, which can
only include values above the current row in the calculation, you can use OLAPAvg to
include values both above and below the current row in the calculation.
The calculations can be restarted based on attributes defined in the function parameters.

174 2017, MicroStrategy Inc.


Functions Reference

Syntax
OLAPAvg<Distinct, OLAPWinStType, OLAPWinStOffset,
OLAPWinEndType, OLAPWinEndOffset, BreakBy, SortBy>
(Argument)
Where:
Distinct is a TRUE/FALSE parameter that allows you to use all values in the
calculation or to calculate using only the unique values. If you define Distinct to
be true, then the parameters OLAPWinStType, OLAPWinStOffset,
OLAPWinEndType, OLAPWinEndOffset, and SortBy are ignored.
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
OLAPWinStType defines the window type for the starting location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinStType value in parentheses:
Top of data set (0): The calculation starts at the top value as determined by the
BreakBy and SortBy values.
Current row (2): The calculation starts at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
OLAPWinStOffset defines the offset of rows from the current row to start the
calculation. You can define this offset if the OLAPWinStType parameter is defined
as N rows before current row (3) or N rows after current row (4).
OLAPWinEndType defines the window type for the ending location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinEndType value in parentheses:
Bottom of data set (1): The calculation stops at the bottom value as determined
by the BreakBy and SortBy values.
Current row (2): The calculation stops at the current row.
N rows before current row (3): The calculation stops a number of rows before
the current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
N rows after current row (4): The calculation stops a number of rows after the
current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.

2017, MicroStrategy Inc. 175


Functions Reference

OLAPWinEndOffset defines the offset of rows from the current row to stop the
calculation. You can define this offset if the OLAPWinEndType parameter is defined
as N rows before current row (3) or N rows after current row (4).
Argument is a metric representing a list of numbers.

The function is not valid if your starting point is at a lower point than your ending
point.

Example
An OLAPAvg Unit Cost metric is created using the OLAPAvg function based on the Unit
Cost metric, as defined below:
OLAPAvg<OLAPWinStType=3, OLAPWinStOffset=3,
OLAPWinEndType=4, OLAPWinEndOffset=2, BreakBy={Category}
SortBy={Item}>([Unit Cost])
The starting point for the average is defined as three rows before the current row
(OLAPWinStType=3, OLAPWinStOffset=3). The stopping point for the average is
defined as two rows after the current row (OLAPWinEndType=4,
OLAPWinEndOffset=2).
This metric is displayed on a report along with Category, Item, and Unit Cost, as shown
below.

There are a few facts about this data to take note of.
The first value of OLAPAvg Unit Cost is $15. This is calculated by adding $32, $8, and $5
to get a total of $45. This total of $45 is then divided by three (the number of rows
included in the calculation) to get the final result of $15. These rows are included because
the calculation ends two rows after the current row. Even though the calculation starts
three rows before the current row, there is no data above the current row to include in
the calculation.

176 2017, MicroStrategy Inc.


Functions Reference

The fourth value for OLAPAvg Unit Cost is the first value that can include data from all
three rows above the current row to two rows below the current row in the calculation
(($32 + $8 + $5 + $25 + $19 + $20) / 6 = $18.17). Notice that with this
calculation a value of six is used to calculate the average because six rows were included
in the average.
While it is not shown on this report, the calculation would restart for the first Item of
the next Category because the function is defined to break by the Category attribute.

OLAPCount
Returns the count of the current value, preceding values, and succeeding values as
defined in the function arguments. Unlike RunningCount and MovingCount, which
can only include values above the current row in the calculation, you can use
OLAPCount to include values both above and below the current row in the calculation.
The calculations can be restarted based on attributes defined in the function parameters.
Syntax
OLAPCount<Distinct, Null, OLAPWinStType, OLAPWinStOffset,
OLAPWinEndType, OLAPWinEndOffset, BreakBy, SortBy>
(Argument)
Where:
Distinct is a TRUE/FALSE parameter that allows you to use all values in the
calculation or to calculate using only the unique values. If you define Distinct to
be true, then the parameters Null, OLAPWinStType, OLAPWinStOffset,
OLAPWinEndType, OLAPWinEndOffset, and SortBy are ignored.
Null is a TRUE/FALSE parameter that defines whether null values are included in
the total count.
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
OLAPWinStType defines the window type for the starting location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinStType value in parentheses:
Top of data set (0): The calculation starts at the top value as determined by the
BreakBy and SortBy values.
Current row (2): The calculation starts at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.

2017, MicroStrategy Inc. 177


Functions Reference

OLAPWinStOffset defines the offset of rows from the current row to start the
calculation. You can define this offset if the OLAPWinStType parameter is defined
as N rows before current row (3) or N rows after current row (4).
OLAPWinEndType defines the window type for the ending location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinEndType value in parentheses:
Bottom of data set (1): The calculation stops at the bottom value. The top value
is determined by the BreakBy and SortBy values.
Current row (2): The calculation stops at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
OLAPWinEndOffset defines the offset of rows from the current row to stop the
calculation. You can define this offset if the OLAPWinEndType parameter is defined
as N rows before current row (3) or N rows after current row (4).
Argument is a metric representing a list of numbers.

The function is not valid if your starting point is at a lower point than your ending
point.

Example
An OLAPCount Unit Cost metric is created using the OLAPCount function based on the
Unit Cost metric, as defined below:
OLAPCount<OLAPWinStType=3, OLAPWinStOffset=3,
OLAPWinEndType=4, OLAPWinEndOffset=2, BreakBy={Category}
SortBy={Subcategory}>([Unit Cost])
The starting point for the count is defined as three rows before the current row
(OLAPWinStType=3, OLAPWinStOffset=3). The stopping point for the count is
defined as two rows after the current row (OLAPWinEndType=4,
OLAPWinEndOffset=2).
This metric is displayed on a report along with Category, Subcategory, and Unit Cost, as
shown below.

178 2017, MicroStrategy Inc.


Functions Reference

There are a few facts about this data to take note of.
The first value of OLAPCount Unit Cost is three. This is calculated by counting the
current row and two rows after the current row. Even though the calculation starts three
rows before the current row, there is no data above the current row to include in the
calculation.
The fourth entry for OLAPCount Unit Cost is the first entry that can count all three rows
above the current row to two rows below the current row in the calculation. This entry is
able to reach the maximum value of six. Notice that after this entry the count begins to
decrease because there are no longer two rows below the current row to include in the
calculation.
The calculation restarts for the first Subcategory of the next Category because the
function is defined to break by the Category attribute.

OLAPMax (OLAP maximum)


Returns the maximum value based on comparing the current value, preceding values, and
succeeding values as defined in the function arguments. Unlike RunningMax and
MovingMax, which can only include values above the current row in the calculation, you
can use OLAPMax to include values both above and below the current row in the
calculation.
The calculations can be restarted based on attributes defined in the function parameters.

2017, MicroStrategy Inc. 179


Functions Reference

Syntax
OLAPMax<OLAPWinStType, OLAPWinStOffset, OLAPWinEndType,
OLAPWinEndOffset, BreakBy, SortBy>(Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
OLAPWinStType defines the window type for the starting location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinStType value in parentheses:
Top of data set (0): The calculation starts at the top value as determined by the
BreakBy and SortBy values.
Current row (2): The calculation starts at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
OLAPWinStOffset defines the offset of rows from the current row to start the
calculation. You can define this offset if the OLAPWinStType parameter is defined
as N rows before current row (3) or N rows after current row (4).
OLAPWinEndType defines the window type for the ending location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinEndType value in parentheses:
Bottom of data set (1): The calculation stops at the bottom value. The top value
is determined by the BreakBy and SortBy values.
Current row (2): The calculation stops at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
OLAPWinEndOffset defines the offset of rows from the current row to stop the
calculation. You can define this offset if the OLAPWinEndType parameter is defined
as N rows before current row (3) or N rows after current row (4).
Argument is a metric representing a list of numbers.

180 2017, MicroStrategy Inc.


Functions Reference

The function is not valid if your starting point is at a lower point than your ending
point.

Example
An OLAPMax Unit Cost metric is created using the OLAPMax function based on the Unit
Cost metric, as defined below:
OLAPMax<OLAPWinStType=3, OLAPWinStOffset=3,
OLAPWinEndType=4, OLAPWinEndOffset=2, BreakBy={Category}
SortBy={Subcategory}>([Unit Cost])
The starting point for the calculation is defined as three rows before the current row
(OLAPWinStType=3, OLAPWinStOffset=3). The stopping point for the calculation
is defined as two rows after the current row (OLAPWinEndType=4,
OLAPWinEndOffset=2).
This metric is displayed on a report along with Category, Subcategory, and Unit Cost, as
shown below.

There are a few facts about this data to take note of.
The first value of OLAPMax Unit Cost is $14. This is calculated by returning the
maximum value of $14, $11, and $6. These are included because the calculation ends two

2017, MicroStrategy Inc. 181


Functions Reference

rows after the current row. Even though the calculation starts three rows before the
current row, there is no data above the current row to include in the calculation.
The second value also returns $14 as it returns the maximum value of $14, $11, $6, and
$7.
The third value for OLAPMax Unit Cost is the first entry that includes $26 in its
maximum calculation. The rest of the OLAPMax Unit Cost values for the Books Category
return $26 because this is the maximum value, and it is within the window of three rows
above the current row to two rows below the current row.
The calculation restarts for the first Subcategory of the next Category because the
function is defined to break by the Category attribute.

OLAPMin (OLAP minimum)


Returns the minimum value based on comparing the current value, preceding values, and
succeeding values as defined in the function arguments. Unlike RunningMin and
MovingMin, which can only include values above the current row in the calculation, you
can use OLAPMin to include values both above and below the current row in the
calculation.
The calculations can be restarted based on attributes defined in the function parameters.
Syntax
OLAPMin<OLAPWinStType, OLAPWinStOffset, OLAPWinEndType,
OLAPWinEndOffset, BreakBy, SortBy>(Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
OLAPWinStType defines the window type for the starting location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinStType value in parentheses:
Top of data set (0): The calculation starts at the top value as determined by the
BreakBy and SortBy values.
Current row (2): The calculation starts at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
OLAPWinStOffset defines the offset of rows from the current row to start the
calculation. You can define this offset if the OLAPWinStType parameter is defined
as N rows before current row (3) or N rows after current row (4).

182 2017, MicroStrategy Inc.


Functions Reference

OLAPWinEndType defines the window type for the ending location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinEndType value in parentheses:
Bottom of data set (1): The calculation stops at the bottom value. The top value
is determined by the BreakBy and SortBy values.
Current row (2): The calculation stops at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
OLAPWinEndOffset defines the offset of rows from the current row to stop the
calculation. You can define this offset if the OLAPWinEndType parameter is defined
as N rows before current row (3) or N rows after current row (4).
Argument is a metric representing a list of numbers.

The function is not valid if your starting point is at a lower point than your ending
point.

Example
An OLAPMin Unit Cost metric is created using the OLAPMin function based on the Unit
Cost metric, as defined below:
OLAPMin<OLAPWinStType=3, OLAPWinStOffset=3,
OLAPWinEndType=4, OLAPWinEndOffset=2, BreakBy={Category}
SortBy={Subcategory}>([Unit Cost])
The starting point for the calculation is defined as three rows before the current row
(OLAPWinStType=3, OLAPWinStOffset=3). The stopping point for the calculation
is defined as two rows after the current row (OLAPWinEndType=4,
OLAPWinEndOffset=2).
This metric is displayed on a report along with Category, Subcategory, and Unit Cost, as
shown below.

2017, MicroStrategy Inc. 183


Functions Reference

There are a few facts about this data to take note of.
The first value of OLAPMinUnit Cost is $6. This is calculated by returning the minimum
value of $14, $11, and $6. These are included because the calculation ends two rows after
the current row. Even though the calculation starts three rows before the current row,
there is no data above the current row to include in the calculation.
All of the OLAPMin Unit Cost values for the Books Category return $6 because this is
the minimum value, and it is within the window of three rows above the current row to
two rows below the current row.
The calculation restarts for the first Subcategory of the next Category because the
function is defined to break by the Category attribute.

OLAPRank
Returns the rank of the current value based on the other values defined by the sorting
criteria. The ranking can be restarted based on attributes defined in the function
parameters.
The OLAPRank function allows the ranking to be calculated in the database, rather than
calculating the ranking using the MicroStrategy Analytical Engine.

Be aware of the following:

184 2017, MicroStrategy Inc.


Functions Reference

Since OLAPRank is calculated in the database, you can only use this function if
your database supports the OLAPRank function.
Any metrics that use the OLAPRank function must not be defined as smart
metrics. If metrics that use OLAPRank are defined as smart metrics, the
calculation is performed in the MicroStrategy Analytical Engine and an error is
returned.
You must include at least one metric in the SortBy parameter.
Syntax
OLAPRank<BreakBy, SortBy>()
Where:
BreakBy is the attribute indicating where the ranking restarts.
SortBy is the attribute or metric by which the data is sorted. For OLAPRank, the
SortBy parameter is also where you can include the metric to perform the
calculation on. You must include at least one metric in the SortBy parameter.
Example
The MicroStrategy Tutorial project includes an Avg Revenue per Customer metric. This
metric can be placed on a report along with the attributes Quarter and Region to display
the quarterly average revenue per customer for each region.
To extend this analysis, you can create an OLAPRank Avg Rev per Customer metric as
defined below:
OLAPRank<BreakBy={Quarter}, SortBy= ([Avg Revenue per
Customer], Region@ID) >()
When this metric is included on a report with Quarter, Region, and Avg Revenue per
Customer, it displays the regional rank of the quarterly average revenue per customer for
each region. This is shown in the report below.

The report has been sorted by Quarter, and then by the OLAPRank Avg Rev per
Customer values.

2017, MicroStrategy Inc. 185


Functions Reference

The report shown above displays regions based on their average revenue per customer
for each quarter, sorted from the lowest average revenue per customer to the highest.
This analysis allows you to quickly see how regions are performing based on average
revenue per customer over different quarters. In the first three quarters of data shown
above, Web has the lowest average revenue per customer. However, there is some
variation in the performance of the other regions. Performing this analysis over extended
periods of time can help to show trends in revenue and regional performance.

OLAPSum
Returns the summation of the current value, preceding values, and succeeding values as
defined in the function arguments. Unlike RunningSum and MovingSum, which can
only include values above the current row in the calculation, you can use OLAPSum to
include values both above and below the current row in the calculation.
The calculations can be restarted based on attributes defined in the function parameters.
Syntax
OLAPSum<Distinct, OLAPWinStType, OLAPWinStOffset,
OLAPWinEndType, OLAPWinEndOffset, BreakBy, SortBy>
(Argument)

186 2017, MicroStrategy Inc.


Functions Reference

Where:
Distinct is a TRUE/FALSE parameter that allows you to use all values in the
calculation or to calculate using only the unique values. If you define Distinct to
be true, then the parameters OLAPWinStType, OLAPWinStOffset,
OLAPWinEndType, OLAPWinEndOffset, and SortBy are ignored.
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
OLAPWinStType defines the window type for the starting location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinStType value in parentheses:
Top of data set (0): The calculation starts at the top value as determined by the
BreakBy and SortBy values.
Current row (2): The calculation starts at the current row.
N rows before current row (3): The calculation starts a number of rows before
the current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
N rows after current row (4): The calculation starts a number of rows after the
current row. You define this offset of rows with the OLAPWinStOffset
parameter described below.
OLAPWinStOffset defines the offset of rows from the current row to start the
calculation. You can define this offset if the OLAPWinStType parameter is defined
as N rows before current row (3) or N rows after current row (4).
OLAPWinEndType defines the window type for the ending location of the
calculation. Select one of the following options, listed by the name of the setting and
its corresponding OLAPWinEndType value in parentheses:
Bottom of data set (1): The calculation stops at the bottom value. The top value
is determined by the BreakBy and SortBy values.
Current row (2): The calculation stops at the current row.
N rows before current row (3): The calculation stops a number of rows before
the current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
N rows after current row (4): The calculation stops a number of rows after the
current row. You define this offset of rows with the OLAPWinEndOffset
parameter described below.
OLAPWinEndOffset defines the offset of rows from the current row to stop the
calculation. You can define this offset if the OLAPWinEndType parameter is defined
as N rows before current row (3) or N rows after current row (4).
Argument is a metric representing a list of numbers.

2017, MicroStrategy Inc. 187


Functions Reference

The function is not valid if your starting point is at a lower point than your ending
point.

Example
An OLAPSum Unit Cost metric is created using the OLAPSum function based on the
Unit Cost metric, as defined below:
OLAPSum<OLAPWinStType=3, OLAPWinStOffset=3,
OLAPWinEndType=4, OLAPWinEndOffset=2, BreakBy={Category}
SortBy={Subcategory}>([Unit Cost])
The starting point for the summation is defined as three rows before the current row
(OLAPWinStType=3, OLAPWinStOffset=3). The stopping point for the summation
is defined as two rows after the current row (OLAPWinEndType=4,
OLAPWinEndOffset=2).
This metric is displayed on a report along with Category, Subcategory, and Unit Cost, as
shown below.

There are a few facts about this data to take note of.
The first value of OLAPSum Unit Cost is $30.82. This is calculated by adding $13.93,
$10.75, and $6.13. These are included because the calculation ends two rows after the

188 2017, MicroStrategy Inc.


Functions Reference

current row. Even though the calculation starts three rows before the current row, there
is no data above the current row to include in the calculation.

The data displayed on the report is rounded to the nearest cent, which can give the
impression that some calculations are slightly incorrect. For example, adding
$13.93, $10.75, and $6.13 actually totals $30.81 rather than $30.82 as displayed on
the report. This difference is because the data is rounded up for display on the
report. You can display more decimal values for the Unit Cost and OLAPSum Unit
Cost metrics to see the exact values.

The fourth value for OLAPSum Unit Cost is the only value that can include data from all
three rows above the current row to two rows below the current row in the calculation
($13.93 + $10.75 + $6.13 + $7.20 + $25.93 + $9.43 = $73.38).
The final OLAPSum Unit Cost value for the Books Category can only include the Unit
Cost value for the current row and the three rows above it ($6.13 + $7.20 +
$25.93 + $9.43 = $48.70). It cannot include two rows below the current row
because the calculation restarts for the first Subcategory of the next Category. The
calculation restarts because the function is defined to break by the Category attribute.

RunningAvg (running average)


Moves through the values in a list and returns the running average, adding the current
value to the sum of the preceding values and dividing by the current count of values. The
calculation can restart based on attribute groupings identified in the parameter settings.
This is an OLAP function.
Syntax
RunningAvg <BreakBy,SortBy>(Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing a list of numbers.
Expression

Where:
yi = metric value at the ith row

m = window size
n = number of rows/metric values

2017, MicroStrategy Inc. 189


Functions Reference

Example
This simple example illustrates how the RunningAverage function walks through a list
of values calculating and returning the new average with the addition of each value. The
calculation is shown in the following table.

Values RunningAverage

10 10 (10/1)
20 15 (30/2)
30 20 (60/3)
40 25 (100/4)
50 30 (150/5)

RunningCount
Returns the running count for each value in a list of values, returning the current count
after each value. The count can be restarted based upon attributes identified in the
parameter settings. This is an OLAP function.
Syntax
RunningCount<BreakBy,SortBy>(Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing the list of values.
Expression

Where:
1i = 0 if the ith row of argument is NULL

1i = 1 otherwise

n = number of rows/metric values


Example

190 2017, MicroStrategy Inc.


Functions Reference

This simple example demonstrates how the RunningCount function counts rows of
data. This report uses the attributes Region and Employee, and the metrics Revenue and
Running count. A filter is applied so the only Regions displayed are South, Northwest,
and Southwest. The Running count metric is defined as follows:
RunningCount<BreakBy={Region}, SortBy= (Value) >(Revenue)
The count restarts for every Region.
The entries are counted based on the value of the metric Revenue in ascending order
(the lowest value is counted as 1, next lowest is 2, and so on).

RunningMax (running maximum)


Returns the running maximum value in a list of values by comparing the current and
preceding values. The evaluation can restart based on attributes identified in the
parameter settings. This is an OLAP function.
Syntax
RunningMax <BreakBy, SortBy>(Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing the list of numbers.
Expression

Where:
yi = metric value at the ith row

2017, MicroStrategy Inc. 191


Functions Reference

n = number of rows/metric values


Example
This simple example illustrates how the RunningMax function moves through a list of
values comparing each value to the highest value identified so far and returning the
maximum value as it progresses. The calculation is shown in the following table.

Values RunningMaximum

8
6 8 (8>6)
10 10 (10>8)
9 10 (10>9)
5 10 (10>5)

RunningMin (running minimum)


Returns the running minimum value in a list of values by comparing current and
preceding values. The evaluation can restart based on attributes identified in the
parameter settings. This is an OLAP function.
Syntax
RunningMin <BreakBy, SortBy> (Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing the list of numbers.
Expression

Where:
yi = metric value at the ith row

n = number of rows/metric values


Example

192 2017, MicroStrategy Inc.


Functions Reference

This simple example illustrates how the RunningMinimum function walks through a list
of values comparing each value to the lowest value identified so far and returning the
minimum value as it progresses. The calculation is shown in the following table.

Values RunningMinimum

8
6 6 (6<8)
10 6 (6<10)
9 6 (6<9)
5 5 (5<6)

RunningStDevP (running standard deviation of a


population)
Returns the running standard deviation of a population for a value expression. The list of
values supplied is the population. The calculation can restart based on attributes
identified in the function parameter settings. This is an OLAP function.
Syntax
RunningStDevP <BreakBy, SortBy> (Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing the list of numbers.
Expression

Where:
yi = metric value at the ith row

n = number of rows/metric values


Example

2017, MicroStrategy Inc. 193


Functions Reference

This example shows a report where the running standard deviation of the revenue is
calculated. This calculation is based on the assumption that the list of values supplied in
the metric represents the entire population of the data for which you want to obtain the
standard deviation. The calculation starts over for each region, and the information is
sorted within the region by state in ascending order.

Compare this example report to the example for RunningStDev to see the different
values returned when calculating for a population as opposed to a sample.

The report contains the attributes Customer Region and Customer State, and the metrics
Total Revenue, RunningStDevP, and StDevP. A report filter limits data to the Southwest,
Southeast, and Northwest regions. The definition of the RunningStDevP metric is as
follows:
RunningStDevP<BreakBy={[Customer Region]}, SortBy=<
[Customer State])>([Total Revenue])

RunningStDev (running standard deviation)


Returns the running standard deviation of a sample for a value expression. The list of
values supplied is the sample. The calculation can restart based on attributes identified in
the function parameters. This is an OLAP function.
Syntax
RunningStDev<BreakBy,SortBy>(Argument)
Where:
BreakBy is the attribute indicating where the calculation restarts.
SortBy is the attribute or metric by which the data is sorted.
Argument is a metric representing the list of numbers.
Expression

194 2017, MicroStrategy Inc.


Functions Reference

Example
This example shows a report where the running standard deviation of the revenue is
calculated. This calculation is based on the assumption that the list of values supplied in
the metric represents a sample of the data for which you want to obtain the standard
deviation. The calculation starts over for each region, and the information is sorted
within the region by state in ascending order.

Compare this example report to the example for RunningStDevP to see the
different values returned when calculating for a population as opposed to a sample.

The report contains the attributes Customer Region and Customer State, and the metrics
Total Revenue, RunningStDev, and StDev. A report filter is used to limit the data to the
Southwest, Southeast and Northwest regions. The definition of the RunningStDev metric
is as follows:
RunningStDev<BreakBy={[Customer Region]}, SortBy=<
[Customer State])>([Total Revenue])

RunningSum
This function returns the running sum of the values in a list, adding the current value to
the preceding values. It can be used to maintain running totals of values in specific
categories as well as an entire set. The calculation can restart based on attributes
identified in the parameter settings. This is an OLAP function.
Syntax

2017, MicroStrategy Inc. 195


Functions Reference

RunningSum <BreakBy,SortBy>(Argument)
Where:
BreakBy is the parameter that sets the attribute designating where the calculation
restarts.
SortBy is the parameter that sets the attribute or metric by which the data is sorted.
Argument is a metric representing the list of numbers.
Expression

Example
Example 1: A running sum displays the results of each calculation as it works towards the
total of a set of values. Using the value set (1, 2, 3, 4, 5), the following table illustrates the
running sum and its calculations.

Values RunningSum

1 1 (0+1)
2 3 (1+2)

3 6 (3+3)
4 10 (6+4)
5 15 (10+5)

Example 2: This example shows a report where the running sum of the revenue is
calculated. The calculation starts over for each region, and the information is sorted
within the region by state in ascending order. The report contains the attributes
Customer Region and Customer State, and the metrics Total Revenue and Running Sum.
A report filter limits data to the Southwest, Southeast, and Northwest regions. The
definition of the Running Sum metric is as follows:
RunningSum<BreakBy={[Customer Region]}, SortBy=<[Customer
State])>([Total Revenue])
Note that the subtotaled Total Revenue is equal to the last value in the Running Sum
column for each region.

196 2017, MicroStrategy Inc.


Functions Reference

WeightedCorr (weighted correlation)


A correlation of two values describes the degree to which the values are related or
associated. Values that are closely related with either a positive or negative correlation
will have a correlation close to 1 or -1 respectively, while values that are not correlated at
all will have a correlation close to 0.
A weighted correlation allows you to apply a weight, or relative significance to each value
comparison. Correlation comparisons with a higher value for their weight are considered
as more significant when compared to the other value comparisons.

To determine the correlation of two values without applying a weight to the


comparisons, see Correlation, page 339.

Syntax
WeightedCorr <FactID> (Argument1, Argument2, Weight)
Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Argument1 and Argument2 are attributes, facts, or metrics representing lists of
numbers for comparison. A correlation is calculated on these values to determine the
level of association between the two values.
Weight is an attribute, fact, or metric representing a list of numbers to define the
weight of each comparison.
Expression

2017, MicroStrategy Inc. 197


Functions Reference

Where:
x and y are the values being compared.
w is the weight applied to each comparison.
Usage notes
The correlation coefficient is measured on a scale that varies from 1 to - 1. So only a
value between -1 and 1 is returned.
Complete correlation between two variables is expressed by either 1 or -1. When one
variable increases as the other increases, the correlation is positive. When one
decreases as the other increases, the correlation is negative. Complete absence of
correlation is represented by 0.
If an array or reference argument contains text, logical values, or empty cells, those
values are ignored; however, cells with the value zero are included.
If Argument1 and Argument2 have a different number of data points, an error is
returned.
If either Argument1 or Argument2 is empty, or if the standard deviation of their
values equals zero, an error is returned.
Example
Your company keeps employee statistics including their overall satisfaction with their job
and role at the company, as well as their performance score. While these are both
important statistics, it can also be beneficial to know how closely related these two
statistics are. Knowing this information can help determine if an employees satisfaction
with their job is related to their performance.
A report including both the correlation and weighted correlation of these statistics,
displayed as percentages, is shown below for employees at the executive level:

The expressions for these calculations are as follows:


Correlation:

198 2017, MicroStrategy Inc.


Functions Reference

Correlation([Avg. Performance Score], [Avg.


Satisfaction Score]) {Level , ~ }
Weighted Correlation:
WeightedCorr([Avg. Performance Score], [Avg.
Satisfaction Score], Tenure) {Level, ~}
Both the correlation and weighted correlation indicate that employee satisfaction and
performance are positively correlated, meaning that when one increases so does the
other. The weighted correlation includes an employees tenure into the correlation
calculation. This means that more significance is given to correlation comparisons for
employees that have been with the company longer. For the executive level employees,
factoring in tenure results in a smaller correlation between satisfaction and performance.
This type of analysis can be crucial in determining how performance can be improved or
maintained both for new hires and long tenured employees.

WeightedCov (weighted covariance)


Covariance is used to examine the relationship between two data sets. For instance, the
covariance can be used to examine whether an increase in income is related to higher
education levels. A covariance greater or less than zero indicates a relationship, while a
value of zero indicates no relationship.
A weighted covariance allows you to apply a weight, or relative significance to each value
comparison. Covariance comparisons with a higher value for their weight are considered
as more significant when compared to the other value comparisons.

To determine the covariance of two values without applying a weight to the


comparisons, see Covariance, page 339.

Syntax
WeightedCov <FactID> (Argument1, Argument2, Weight)
Where:
Argument1 and Argument2 are attributes, facts, or metrics representing lists of
numbers for comparison. A covariance is calculated on these values to determine the
level of association between the two values.
Weight is an attribute, fact, or metric representing a list of numbers to define the
weight of each comparison.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

x and y are the Argument1 and Argument2 values being compared.


w is the weight applied to each comparison.

2017, MicroStrategy Inc. 199


Functions Reference

= average value of x

= average value of y

Usage notes
The following are invalid conditions:
If an array or reference argument contains text, logical values, or empty cells, those
values are ignored; however, cells with the value zero are included.
If Argument1 and Argument2 have a different number of data points, an error is
returned.
If either Argument1 or Argument2 is empty, an error is returned.
Example
Your company keeps employee statistics including their overall satisfaction with their job
and role at the company, as well as their performance score. While these are both
important statistics, it can also be beneficial to know how closely related these two
statistics are. Knowing this information can help determine if an employees satisfaction
with their job is related to their performance.
A report including both the covariance and weighted covariance of these statistics, is
shown below for employees at the executive level:

The expressions for these calculations are as follows:


Covariance:
Covariance([Avg. Performance Score], [Avg. Satisfaction
Score]) {Level , ~ }
Weighted Covariance:
WeightedCov([Avg. Performance Score], [Avg.
Satisfaction Score], Tenure) {Level, ~}
Both the covariance and weighted covariance indicate that employee satisfaction and
performance are positively related, meaning that when one increases so does the other.
The weighted covariance includes an employees tenure into the covariance calculation.
This means that more significance is given to covariance comparisons for employees that

200 2017, MicroStrategy Inc.


Functions Reference

have been with the company longer. For the executive level employees, factoring in
tenure results in a smaller relationship between satisfaction and performance. This type
of analysis can be crucial in determining how performance can be improved or
maintained both for new hires and long tenured employees.

WeightedMean
An average, also known as an arithmetic mean, is the sum of a set of values divided by
the number of values in the set.
A weighted mean allows you to apply a weight, or relative significance to each value
when determining an average. Values with a higher value for their weight are considered
as more significant when compared to the other values.

To calculate an average without applying a weight to the values, see Avg (average),
page 95.

Syntax
WeightedMean<FactID>(Argument1, Weight)
Where:
Argument1 is an attribute, fact, or metric representing a list of numbers that are
used to calculate an average.
Weight is an attribute, fact, or metric representing a list of numbers to define the
weight of each value.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

Example
You can calculate a weighted mean to apply greater significance to certain values used to
determine an average. For example, you can use the percent growth of revenue as a way
to define revenue values as more or less significant for an average. The report shown
below contains the attribute Customer Region and the metrics Revenue, Percent Growth,
Average Revenue, and Weighted Mean Revenue. The report also includes the Year
attribute in the page-by to show results by year.
The expressions for the average and weighted mean calculations are as follows:
Average Revenue:
Avg(Revenue){Year}
Weighted Mean Revenue:
WeightedMean(Revenue, [Percent Growth]){Year}

2017, MicroStrategy Inc. 201


Functions Reference

The weighted mean takes into account the weights of each revenue value. For example,
since Centrals percent growth is greater than Northwests percent growth, and the
weight in this example is the percent growth, Centrals revenue is given more significance
in the weighted mean calculation. This results in $2,229,195 for the Weighted Mean
Revenue as compared to $2,122,695 for the Average Revenue for all customer regions for
the given year.
Notice that while the Average Revenue and Weighted Mean Revenue are applicable to a
year in this example, the values are displayed for every Customer Region row. One way to
simplify the display of this information is to include this data on a dashboard. You can
include the Average Revenue and Weighted Mean Revenue results in text fields along
with additional visualizations of the data, as shown below.

WeightedStDev (weighted standard deviation of a


sample)
The standard deviation is an indicator of how widely values in a group differ from the
mean (see StDev (standard deviation of a sample), page 113). It is useful for comparing
different sets of values with a similar mean.
A weighted standard deviation allows you to apply a weight, or relative significance to
each value in a set of values. Values with a higher value for their weight are considered as
more significant to a sample as compared to the other values in a sample.
WeightedStDev returns the weighted standard deviation of a population based on a
sample. This is a group-value function.
Syntax

202 2017, MicroStrategy Inc.


Functions Reference

WeightedStDev <Distinct, FactID>(Argument, Weight)


Where:
Argument is an attribute, fact, or metric representing a list of numbers.
Weight is an attribute, fact, or metric representing a list of numbers to
define the weight of each value.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

Where:
wi: The weight of the ith value. Values with a higher value for their weight are
considered as more significant to a sample as compared to the other values in a
sample.
N: The number of weights that are not equal to zero.
xw: The weighted mean of the values.

Usage notes
In this function, arguments correspond to a population sample as opposed to the
entire population. For entire populations, see StDevP (standard deviation of a
population), page 112.
Example
This example shows a report where the standard deviation and a weighted standard
deviation of the revenue are calculated. This calculation is based on the assumption that
the list of values supplied in the metric represents a sample of the data for which you
want to obtain the standard deviation. The calculation is based on the revenue values for
each state within a region and calculated at the region level.
The report contains the attributes Customer Region and Customer State, and the metrics
Revenue, Standard Deviation, and Weighted Standard Deviation.
The definition of the standard deviation metrics are as follows:
Standard Deviation:
StDev(Revenue){[Customer Region], ~}
Weighted Standard Deviation:
WeightedStDev(Revenue, Revenue) {[Customer Region] , ~
}

2017, MicroStrategy Inc. 203


Functions Reference

For this example, the revenue values are also used as the weights given to each
revenue value included in the standard deviation.
The report is shown below:

The weighted standard deviation also takes into account the weights of each revenue
value. For example, since Connecticuts revenue is greater than Maines revenue, and the
weight in this example is the revenue value, Connecticuts revenue is given more
significance in the weighted standard deviation calculation. This results in $957,689 for
the standard deviation as compared to $1,141,237 for the weighted standard deviation of
Northeast revenue.
Notice that while the standard deviation and weighted standard deviation are applicable
to a Customer Region in this example, the values are displayed for every Customer State
row. One way to simplify the display of this information is to include this data on a
dashboard. You can include the standard deviation and weighted standard deviation
results in text fields along with additional visualizations of the data, as shown below.

204 2017, MicroStrategy Inc.


Functions Reference

Rank and NTile functions


Rank and NTile functions are used to qualify a list of values relative to the other values.
For example, out of the four quarters in a year, you want to rank total revenue from one
to four, with one being the top revenue for the year.
Functions including Rank, Percentile, PercentRank, and
PercentRankRelative allow you to view the ranking of values such as a simple
integer list or various types of percentages.
NTile functions are used to group the values in an ordered list into one of several buckets
or NTiles. Each element in the list is assigned an integer corresponding to the bucket to
which it belongs. The various NTile functions differ in how the buckets are defined.
Some functions allow you to define the number of buckets, others allow you to define
the size of the buckets, and so on.

NTile
NTile functions are used to group the values in an ordered list into one of several buckets
or NTiles. For the NTile function, the buckets are calculated so that each bucket has
exactly the same number of rows assigned to it or at most one row more than the others
(the exception is that identical value rows are placed in the same bucket). For example, if
you have 100 rows in a partition and define an NTile function with four buckets, 25
rows will be assigned a value of 1, 25 rows will have value 2, and so on. These buckets are
referred to as equiheight buckets.
If the number of rows in the partition does not divide evenly into the number of buckets,
then, barring identical value rows, the number of rows assigned per bucket will differ by
one at most. The extra rows are added to buckets using the calculations ceiling(1*
(buckets/remainder)),...,
ceiling(remainder*(buckets/remainder)).
For example, if there are 103 distinct value rows in a partition which has an
NTile<Tiles=5>() function, the first 20 rows will be in the first bucket, the next 21
in the second bucket, the next 20 in the third bucket, the next 21 in the fourth bucket,

2017, MicroStrategy Inc. 205


Functions Reference

and the final 21 in the fifth bucket. The calculations ceiling(1*(5/3))=2, ceiling
(2*(5/3))=4, and ceiling(3*(5/3))=5 include one of the extra three rows each
in the second, fourth, and fifth buckets.
NTile distributes the values in the specified metric, sorted in either ascending or
descending order, over a user-defined number of buckets. Each bucket has an equal
number of elements (if possible). This is an OLAP function.
Syntax
NTile <Ascending, Tiles, BreakBy> (Argument)
Where:
Ascending is a TRUE/FALSE parameter that designates the organization of data
within the NTiles.
BreakBy is the parameter that sets the attribute determining where the calculation
restarts.
Tiles is a positive integer that designates the number of buckets or NTiles.
Argument is a metric representing a list of values to be distributed equally (if
possible) into n buckets.
Example
Example 1: If you define Tiles=4 for a metric that contains 20 values, the function
distributes the numbers as follows:
Values 1 through 5 in bucket 1
Values 6 through 10 in bucket 2
Values 11 through 15 in bucket 3
Values 16 through 20 in bucket 4
Example 2: This example shows a report where the customer states were sorted based on
revenue and then divided among a specified number of buckets. The number of buckets
is defined as 8. The report includes the attribute Customer State and the metrics Total
Revenue and NTile. The NTile metric is a derived one, the syntax for which is as follows:
NTile<Tiles=8>([Total Revenue])
The resulting report divides the 48 states into 8 NTiles, each containing 6 elements
(states). Within each band the data is sorted in ascending order by the attribute Customer
State. A portion of the report is displayed as follows.

206 2017, MicroStrategy Inc.


Functions Reference

NTileSize
NTileSize distributes the values in the specified metric, sorted in either ascending or
descending order, with the same number of elements in each bucket. The number of
elements in each bucket is user-defined. This is an OLAP function.
Syntax
NTileSize <Ascending, BreakBy> (Argument, Size)
Where:
Ascending is a TRUE/FALSE parameter that designates the organization of data
within the NTiles.
BreakBy is the parameter that sets the attribute determining where the calculation
restarts.
Argument is a metric representing a list of values to be distributed in buckets.
Size is a positive integer that designates the number of elements per bucket.

2017, MicroStrategy Inc. 207


Functions Reference

Example
Example 1: If you define the Size as 2, the function returns buckets containing two
values each. If there are six values, values one and two go in bucket 1, values three and
four go in bucket 2, and values five and six go in bucket 3.
Example 2: This example shows a report where the customer states are sorted by revenue
and then placed in buckets based on the number of elements that can fit in a bucket. The
number of elements per bucket size is defined as 8. The report includes the attribute
Customer State and the metrics Total Revenue and NTileSize. The syntax for the
NTileSize metric is as follows:
NTileSize ([Total Revenue],8)
The resulting report divides the 48 states into 6 buckets each containing 8 elements
(states). A portion of the resulting report displays as follows.

NTileValue
NTileValue distributes the values in the metric by value ranges over a user-defined
number of buckets, sorted in either ascending or descending order. Each bucket is the
same size in terms of the range of values contained in the bucket, but the number of
elements per bucket is not equal. This is an OLAP function.

208 2017, MicroStrategy Inc.


Functions Reference

Syntax
NTileValue <Ascending, Segments, BreakBy> (Argument)
Where:
Ascending is a TRUE/FALSE parameter that designates the organization of data
within the NTiles.
Segments is a positive integer designating the number of buckets in which the
values are distributed.
BreakBy is the parameter that sets the attribute determining where the calculation
restarts.
Argument is a metric representing a list of values to be distributed into buckets.
Example
Example 1: If you define the Segments=4, and the minimum value in the range is 5 and
the maximum is 105, the bucket distribution is as follows, where x is the value:
5 x < 30 in bucket 1
30 x < 55 in bucket 2
55 x < 80 in bucket 3
80 x 105 in bucket 4
Example 2: This example shows a report where the customer states are sorted based on
revenue and then placed in buckets based on the value range to which they belong. The
number of buckets (segments) is defined as 4. The range of values is divided by the
number of buckets and the result is used to define four value ranges into which all the
values fall. The report includes the attribute Customer State and the metrics Total
Revenue and NTileValue. The syntax for the NTileValue metric is as follows:
NTileValue<Segments=4>([Total Revenue])
The resulting report displays the 48 states distributed across 4 buckets. Notice that the
number of elements in each bucket is not equal as more values fall into one range than
another. A portion of the resulting report is displayed as follows.

2017, MicroStrategy Inc. 209


Functions Reference

Example 3: Histogram

The reports and components used in this example are available in the
MicroStrategy Tutorial under the following folder:
MicroStrategy Tutorial\Public Objects\Reports\MicroStrategy
Platform Capabilities\Advanced Analytics\Statistics and Fo
recasting\Histogram

How are my customers distributed (classified) based on sales data?


You are interested in finding out how your customers are distributed based on their
contributions to sales data. This example segments customers into 10 separate groups,
with each group representing the customers within a 10% increment of sales. For
example, the first segment includes the customers who spend in the lowest 10% of the
sales, while the final, tenth segment includes the customers who spend in the top 10% of
the sales.
This example uses the following concepts:
Analytical functions: NTileValue
Custom group
NTileValue distributes values into buckets based on minimum and maximum values.
These tiles are assigned an integer and the contents of each bucket denoted accordingly.
For example, all customers that fall in the first bucket are assigned a 1, all customers in
the second bucket are assigned a 2, and so on. This function is computed by Intelligence

210 2017, MicroStrategy Inc.


Functions Reference

Server. The metric using NTileValue is then used to create a dynamic classification of
Customers using a custom group.
To create a general solution that can be used by different users, use object prompts (see
instructions below).
Create the following object prompts:
Choose a base fact. This object prompt asks the user to select a fact: Revenue, Profit,
or Units Sold.

Choose a sample set level. This object prompt asks the user to select an attribute:
Customer, Item, or Day.

Once you have identified the basic fact and attribute to analyze, you can start building
other objects. Take the following steps:
1 Create a metric defined as follows:

2017, MicroStrategy Inc. 211


Functions Reference

Sample Set Metric = Sum(?[Choose a base fact]){~, ?


[Choose a sample set level]}
2 To put the value in the proper buckets (tiles), create another metric defined as:
Decile By Value = NTileValue<Segments=10> ([Sample Set
Metric])
3 Create a dynamic classification of the subject attribute (Customers, Item, or Day) by
building a custom group using banding. Use the metric Decile By Value, the banding
type band count and set the band count to 10, starting at 1 and stopping at 10.

4 Choose to show only individual items within this element since the objective is to
build a graph (histogram) for this custom group.

212 2017, MicroStrategy Inc.


Functions Reference

5 Count the number of elements in the new classification to display a histogram. To do


this, create a dummy metric defined as follows:
Count of Samples = Count(1){~}
6 Since there is no column to perform the count, define the metric so that the
database can calculate how many attribute elements are in each custom group
element.
7 Add the Decile by Value custom group to the row axis, and the Count of Samples
metric to the column axis.
8 Execute the report with attribute Customer and fact Revenue, and the Decile
Histogram, in Grid mode, displays as follows:

The same report, in graph mode, appears as follows:

2017, MicroStrategy Inc. 213


Functions Reference

The SQL generated for the Decile by Histogram is as follows:


Pass0 - Duration: 0:00:00.25
select a11.[CUSTOMER_ID] AS CUSTOMER_ID,
a11.[TOT_DOLLAR_SALES] AS WJXBFS1
from [CUSTOMER_SLS] a11
Pass1 - Duration: 0:00:00.09
create table ZZT1Y02011CMQ000 (
CUSTOMER_ID SHORT,
DA56 LONG)
Pass2 - Duration: 0:00:00.00
[An Analytical SQL]
Pass3 - Duration: 0:01:13.64
insert into ZZT1Y02011CMQ000 values (1499, 1)
Pass4 - Duration: 0:00:00.32
select a11.[DA56] AS DA56,
count(1.0) AS WJXBFS1
from [ZZT1Y02011CMQ000] a11
group by a11.[DA56]
Pass5 - Duration: 0:00:00.03
drop table ZZT1Y02011CMQ000
Pass0 computes the revenue for each Customer using the Sample Set Metric.
The next three passes (Pass1, Pass2, and Pass3) prepare the dynamic classification of
Customer for the custom group. This series of SQL passes essentially builds a
dynamic lookup table for the classification that is requested. The column DA stands
for Dynamic Attribute. The Intelligence Server computes the NTileValue function.
This is indicated by [An Analytical SQL] in Pass3. The value is then inserted,
with the new classification, into the dynamic lookup table for the custom group.
Pass4 calculates the number of customers that belong to each custom group element.
Pass5 drops the temporary table.

214 2017, MicroStrategy Inc.


Functions Reference

NTileValueSize
NTileValueSize distributes the values in the metric across buckets based on a user-
specified value range, sorted in either ascending or descending order. This is an OLAP
function.
Syntax
NTileValueSize <Ascending, BreakBy> (Argument, Size)
Where:
Ascending is a TRUE/FALSE parameter that designates the organization of data
within the NTiles.
BreakBy is the parameter that sets the attribute determining where the calculation
restarts.
Argument is a metric representing the list of values to be distributed across buckets.
Size is a real number designating the size of the range of values for each bucket.
Example
Example 1: If you define size as 1000 and your range of values begins at 1200, the first
bucket contains values 1200 through 2199, the second bucket contains values 2200
through 3199, and so on until every value is in a bucket. It does not matter how many
values are in each bucket; it only matters that their value is within the bucket range.
Example 2: This example shows a report where the customer states were sorted based
upon revenue and then placed in buckets based upon the value range to which they
belong. The value range is defined as 100,000. Beginning at the lowest metric value, in
this case 18,654, the first bucket contains values from 18,654 to 118,653, the next bucket
ranges from 118,654 to 218,653, and so on until all values are in buckets. The highest
value in the report is 1,839,238, which falls into bucket 19 and is the only value in that
range.
The report includes the attribute Customer State and the metrics Total Revenue and
NTileValueSize. The syntax for the NTileValueSize metric is as follows:
NTileValueSize ([Total Revenue], 100000)
A portion of the resulting report is displayed as follows.

2017, MicroStrategy Inc. 215


Functions Reference

Percentile
Returns the nth percentile of values in a given range. This function can be used to
establish thresholds indicating, for example, which states have revenue above the 75th
percentile for their region. This is a group-value function.
Syntax
Percentile <Ascending, FactID> (Argument, Percent)
Where:
Ascending is a TRUE/FALSE parameter that indicates the organization of the data.
Argument is an attribute, fact or metric representing a list of numbers.
Percent is the decimal value of the percent for which you want to use as a
threshold.
Example
Example 1: If you have an argument containing the values 1, 2, 3, and 4 and you want to
find the threshold of the 3oth percentile, the syntax is as follows:
Percentile ({1, 2, 3, 4}, 0.3) = 1.9
1.9 is the level of the 30th percentile. All values above 1.9 are greater than the 30th
percentile.

216 2017, MicroStrategy Inc.


Functions Reference

Example 2: This example shows a report where only states with Total Revenue greater
than the threshold for the 75th percentile in its region are displayed. The report contains
the attributes Customer Region and Customer State, and the metrics Total Revenue and
Percentile. A view filter is then applied to the report so that it only displays states where
Total Revenue is greater than Percentile.
The syntax for the Percentile metric is as follows:
Percentile([Total Revenue], .75){[Customer Region]}

PercentRank
This function is used to display the ranking of values as a percentage. For example you
can rank profit for a particular region based on the profit for all regions.
The calculation can restart based on attributes identified in the parameter settings. This
is an OLAP function.
You can also rank values in the following ways:
You use the Rank function (see Rank , page 220) to rank values as an integer value.
For example you can rank profit for five categories from 1 to 5.
You use the PercentRankRelative function (see PercentRankRelative, page
218) to rank values as a percentage, with the ranking based on another data set. For
example you can rank profit for the current year based on last years profit.
Syntax
PercentRank <inclusive, BreakBy> (Argument)
Where:
Argument is a fact or metric representing a list of numbers that are to be ranked.
inclusive is a TRUE/FALSE parameter that indicates whether the rank is inclusive
or exclusive:

2017, MicroStrategy Inc. 217


Functions Reference

TRUE (default): The percent rank is in a range from 0 to 1 inclusive. This means
that 0% and 100% are included.
FALSE: The percent ranks is in a range from 0 to 1 exclusive. This means that
0% and 100% are excluded.
BreakBy is the parameter that designates where the calculation should restart.
Example
The example report shown below displays revenue information across regions for a given
quarter. You can use PercentRank to return the rank of revenue for each region during a
given quarter.
The definition for the Percent Rank Revenue metric in this example is:
PercentRank<BreakBy={Quarter}>(Revenue)

The Percent Rank Revenue metric in the report shown above provides the rank of each
revenue value. You can see that the highest value in the Northeast region is displayed as
100% while the lowest value in the Northwest region is displayed as 0%.

This report also includes a metric that uses the PercentRankRelative


function, ranking the revenue based on last quarters revenue. For information on
PercentRankRelative and an explanation of these results, see
PercentRankRelative, page 218.

PercentRankRelative
This function is used to display the ranking of values as a percentage, with the ranking
based on a secondary data set. For example you can rank the current years profit for a
particular region based on (relative to) the profit from the previous year.
The calculation can restart based on attributes identified in the parameter settings. This
is an OLAP function.
You can also rank values in the following ways:
The Rank function (see Rank , page 220) ranks values as an integer value. For
example, you can rank profit for five categories from 1 to 5.

218 2017, MicroStrategy Inc.


Functions Reference

The PercentRank function (see PercentRank , page 217) ranks values as a


percentage based on those values as the data set. For example, you can rank profit
for a particular region based on the profit for all regions.
Syntax
PercentRankRelative <inclusive, rankOutliers,
significance, truncate, BreakBy> (Argument, Rank)
Where:
Argument is a fact or metric representing a list of numbers that are to be ranked.
Rank is a fact or metric representing a list of numbers that are used to determine the
rank of the values provided with Argument. The values for Rank should be within
the same range as the values of Argument to provide a relevant ranking. For
example, using profit values to rank revenue would rarely result in relevant results, as
profit is likely to have a different range of values than Revenue. However, using last
years profit to rank this years profit can provide relevant results as the profits
between last year and this year are more likely to be in the same range of values.
inclusive is a TRUE/FALSE parameter that indicates whether the rank is inclusive
or exclusive:
TRUE (default): The percent rank is in a range from 0 to 1 inclusive. This means
that 0% and 100% are included.
FALSE: The percent rank is in a range from 0 to 1 exclusive. This means that 0%
and 100% are excluded.
rankOutliers is a TRUE/FALSE parameter that indicates whether outlier values
are included in the calculation:
TRUE: Values from Rank that are outside of the range of values from Argument
are included in the ranking. This often results in showing values such as 100% or
0%.
FALSE (default): Values from Rank that are outside of the range of values from
Argument are not included in the ranking. The results are left blank rather than
showing a percentage.
significance (default is 3) determines the number of digits that are used to
perform each calculation. You can provide any integer value from 1 to 9 for this
parameter.
truncate is a TRUE/FALSE parameter that indicates whether the final result is
rounded or truncated:
TRUE (default): The final result is truncated, based on the significance applied to
the calculation. For example, using the default of significance=3, the fourth
digit is dropped and is not used to round the third digit.
FALSE: The final result is rounded, based on the significance applied to the
calculation. For example, using the default of significance=3, the fourth
digit is used to round the third digit.
BreakBy is the parameter that designates where the calculation should restart.

2017, MicroStrategy Inc. 219


Functions Reference

Example
The example report shown below displays revenue information across regions for a given
quarter. You can use PercentRankRelative to return the rank of revenue for each
region during a given quarter, relative to last quarters revenue.
The definition for the Percent Rank Revenue metric in this example is:
PercentRankRelative<BreakBy={Quarter}>(Revenue, [Last
Quarters Revenue])

The Percent Rank Relative Revenue metric in the report shown above provides the rank
of each revenue value. The highest value in the Northeast region displays no data because
last quarters revenue is $797,627, which is greater than any revenue value for this
quarter and thus outside of the range of values. Since the default for the function is to
not rank outlier values, no data is displayed. If you modify the rankOutlier parameter to
be rankOutlier=TRUE, then data is returned for this ranking as shown in the report
below.

This report also includes a metric that uses the PercentRank function, ranking the
revenue based on its own values. For information on PercentRank and an explanation
of these results, see PercentRank , page 217.

Rank
This function is used to display the ranking of values in a list relative to the other values.
The calculation can restart based on attributes identified in the parameter settings. This
is an OLAP function.
Unless the defaults are changed, the function ranks the values in ascending order by the
value of the metric, and the rank is an integer.

220 2017, MicroStrategy Inc.


Functions Reference

Syntax
Rank <ASC, ByValue, BreakBy, NullInclude> (Argument)
Where:
Argument is a fact or metric representing a list numbers.
ASC is a TRUE/FALSE parameter that indicates the order of ranking (1 is the lowest
or highest value).
ByValue is a TRUE/FALSE parameter that indicates whether the ranking is done by
integer values (1, 2, 3, 4) or by percentage (10%, 50%, 75%, 100%).
BreakBy is the parameter that designates where the calculation should restart.
NullInclude is a parameter that determines how NULL values are included in the
rank calculation.
The NullInclude parameter only affects the rank of NULL values if the Rank
function is performed by the MicroStrategy Analytical Engine. The Rank function is
performed by the Analytical Engine for smart metrics, derived metrics, and other
metric scenarios. To determine whether the Rank function for a metric is performed
by the Analytical Engine, view the SQL statement for the report. If the metric is
listed in the Analytical Engine calculation steps, this verifies that the Rank function
is performed by the Analytical Engine.
If the Rank function is performed on a database, the NullInclude parameter is
ignored and NULL values are included in the rank calculation based on the database
standards.
For Rank functions that are performed by the Analytical Engine, you have the
following options for this parameter:
1: If you define NullInclude=1, NULL values are given a rank value equal to
the number of other rank values, plus one. For example, the rank of the Profit
metric in the report below ranks four separate profit values.

There is one NULL value, which is given the rank of 4. The Rank (Profit) metric
in this example uses an ascending rank. If you define the metric with a
descending rank, the other rank values change but the rank value for any NULL
values remains the same. This is shown in the report below.

2017, MicroStrategy Inc. 221


Functions Reference

-1: If you define NullInclude=-1, NULL values are given the rank value of
one. For example, the reports shown below both define the Rank (Profit) metric
with NullInclude=-1. The report on the left uses an ascending rank, while
the report on the right uses a descending rank.

As shown in the reports above, the NULL values for both reports are ranked
with the value of one.
0 (default): If you define NullInclude=0, NULL values are included in the
rank calculation based on the NULL value handling defined using the Null
checking for Analytical Engine VLDB property. For information on VLDB
properties, including steps to access and modify them for various MicroStrategy
objects, see the Supplemental Reference for System Administration :
If you define the Null checking for Analytical Engine property as True,
NULL values are treated as zero values in the rank calculation. For example,
the report shown below ranks the NULL values with a rank of two, because
zero is greater than -10 and less than 40.

If you define the Null checking for Analytical Engine property as False,
NULL values are treated as NULL values, which means NULL values are also
displayed for the rank values. For example, the report shown below displays
the NULL values as NULL in the rank.

222 2017, MicroStrategy Inc.


Functions Reference

Example
This example report displays customer states ranked by revenue within their regions.
There are two metrics, one that ranks by value (default) and the other that ranks using a
percentage. In order to have the state with the highest revenue in each region ranked as
1 in the Rank by Value metric, the Rank by Value ranking is descending. In order to have
the largest number ranked at 100% in the Rank by Percent metric, the ranking is
ascending (default).
The report includes the attributes Customer Region, Customer State, the metric Total
Revenue (defined as Sum(Revenue)), and the two ranking metrics. The syntax for the
metrics is as follows:
Rank by Value:
Rank<ASC=False,ByValue=True, BreakBy={[Customer Region]}>
([Total Revenue])
Rank by Percent:
Rank<ASC=True,ByValue=False BreakBy={[Customer Region]}>
([Total Revenue])
The resulting report is displayed as follows.

String functions
String functions perform various actions that modify the characters returned for a string
of characters. While string functions can be used to create metrics, a more common use
case for these functions is in the creation of attribute forms. For example, these
functions can aid in the creation of attribute forms by combining multiple columns of
information, capitalizing the first letter of a column, removing or returning select
characters of a column, and so on. For information on creating attributes and attribute
forms, see the Project Design Guide.

2017, MicroStrategy Inc. 223


Functions Reference

The MicroStrategy Analytical Engine does not calculate string functions; they are
processed by the database. For information on which string functions are supported for
your specific database, see Appendix A, MicroStrategy and Database Support for
Functions, and search in the section corresponding to your database. String functions for
which your database does not include SQL syntax support cannot be calculated in your
environment.
This section of the document includes information and examples on the data returned by
the function.

BeginsWith
Returns 1 if a text string begins with a specified text pattern. If the text string does not
begin with the pattern, the function returns 0.

For the definition and syntax of the Begins with comparison operator, see Begins
with, page 246.

Syntax
BeginsWith(String, Pattern)
Where:
String is the string that is being searched. You can use facts, metrics, columns, or
string values.
Pattern is the string that is being searched for at the beginning of the values from
String. You can use facts, metrics, columns, or string values.

The text pattern comparison may or may not be case sensitive depending on the
database implementation.

Example
BeginsWith(Region@DESC, "North")
Returns 1 for Regions that start with North, such as Northeast and Northwest.

Char (convert ASCII code to a character)


The Char function converts a decimal ASCII code into its associated character. This
function supports returning any of the standard 128 characters assigned an ASCII code.
Syntax
Char(Argument)
Where:
Argument is a fact, metric, column, or constant value that provides an ASCII code
in ASCII decimal format. Any value provided outside the range of 0 to 127 causes the
Char function to return a single question mark (?) character. Any other invalid
input, such as character strings, causes the Char function to return null.

224 2017, MicroStrategy Inc.


Functions Reference

For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
Char(65)
This example returns A.

Concat (concatenate)
The Concat function combines two or more input strings into one continuous string
and returns the result. For example, concatenating the two strings Micro and
Strategy would result in the single string MicroStrategy. Concat is often used to
combine related values, such as a first and last name.
Syntax
Concat(Argument1, Argument2,..., ArgumentN)
Where:
Argument1,..., ArgumentN are facts, metrics, columns, or string values.

For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.

Example
The Concat function can help to create attribute forms that are a combination of
multiple columns in database tables. For example, an LU_CUSTOMER table includes two
columns: CUST_FIRST_NAME and CUST_LAST_NAME. You can create a single attribute
form that combines these two columns as described below.
Concat([CUST_FIRST_NAME], [CUST_LAST_NAME])
The input from the first column is concatenated with the input from the second column,
to display information such as JohnDoe and JaneDoe for the attribute form.

For scenarios such as the one described above, you can use the ConcatBlank
function (see ConcatBlank (concatenate plus blank space), page 226 below) to
concatenate the strings and include a space between the two strings. This can
result in attribute forms that are easier to read. For example, rather than displaying
JohnDoe, the attribute form would display John Doe.

For an additional example of using the Concat function, see the example section for the
function InitCap (initial capitalization), page 227.

ConcatAgg (concatenate plus delimiter)


The ConcatAgg function takes all of the content from a single input and concatenates
the content as a single string. By default, each string of characters that is concatenated is

2017, MicroStrategy Inc. 225


Functions Reference

separated by a comma. You can define the delimiter.


Syntax
ConcatAgg<Delimiter, FactID, UseLookupForAttributes>
(Argument)
Where:
Argument is facts, metrics, columns, or string values.
Delimiter is a parameter that determines the characters used to separate each
concatenated value. By default, a comma is used.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
UseLookupForAttributes is a TRUE/FALSE parameter that can be used when
performing an aggregation of an attribute. The Count function is most commonly
used to aggregate attributes. For information on this parameter, including an
example of using it with the Count function, see Count , page 97.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
The ConcatAggBlank function can help to create attribute forms that are a
combination of multiple rows in database tables. For example, an LU_CUSTOMER table
includes a column CUST_LAST_NAME. You can create a single attribute form that
combines all the values (rows) for CUST_LAST_NAME into a single attribute form:
ConcatAgg([CUST_LAST_NAME])
Each last name is concatenated, separating each last name with a comma by default.

ConcatBlank (concatenate plus blank space)


The ConcatBlank function concatenates two or more input strings into one
continuous string, inserting a blank space between each string. This function can be used
to combine related values that are logically separated by spaces. For example,
concatenating the two strings Business and Intelligence would result in the single
string Business Intelligence.
Syntax
ConcatBlank (Argument1, Argument2,..., ArgumentN)
Where:
Argument1,..., ArgumentN are facts, metrics, columns, or string values.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.

226 2017, MicroStrategy Inc.


Functions Reference

Example
The ConcatBlank function can help to create attribute forms that are a combination of
multiple columns in database tables. For example, an LU_CUSTOMER table includes two
columns: CUST_FIRST_NAME and CUST_LAST_NAME. You can create a single attribute
form that combines these two columns as described below.
ConcatBlank([CUST_FIRST_NAME], [CUST_LAST_NAME])
The input from the first column is concatenated with the input from the second column,
and an additional space is included between the two inputs. This displays information
such as John Doe and Jane Doe for the attribute form.
For an additional example of using the ConcatBlank function, see the example section
for the function InitCap (initial capitalization), page 227.

EndsWith
Returns 1 if a text string ends with a specified text pattern. If the text string does not end
with the pattern, the function returns 0.

For the definition and syntax of the Ends With comparison operator, see Ends
with, page 247.

Syntax
EndsWith(String, Pattern)
Where:
String is the string that is being searched. You can use facts, metrics, columns, or
string values.
Pattern is the string that is being searched for at the end of the values from
String. You can use facts, metrics, columns, or string values.
Example
EndsWith(Employee@[Last Name], "son")
Returns 1 for Employees with a last name that ends with son, such as Wilson, Johnson,
and so on.

InitCap (initial capitalization)


The InitCap function returns a string in which the first letter of the input string is
capitalized. All other letters appear in lower case. This can help to fix capitalization
errors in information that is displayed for attribute forms, metrics, and other objects.

To capitalize the first letter of every word in a string, see TitleCap (title
capitalization), page 237.

Syntax
InitCap(Argument)

2017, MicroStrategy Inc. 227


Functions Reference

Where:
Argument is a metric, column, or string value representing the text string.
For information on the syntax used in your specific database,see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
The InitCap function can be used to fix capitalization errors for information that is
displayed for attribute forms. For example, an LU_CUSTOMER table includes two
columns: CUST_FIRST_NAME and CUST_LAST_NAME. To ensure that the first letter of
the last name is capitalized you create an attribute form with the following definition.
InitCap([CUST_LAST_NAME])
The input from the column is modified so that the first character is capitalized and all
other characters are lowercase. For example, if the column included information such as
jackson, sMITh, and Hughes, these would be displayed as Jackson, Smith, and Hughes
respectively.
Be aware that this function could potentially return undesired results in certain
scenarios. Using the scenario described above, consider the name McCoy. Using the
InitCap function, this would be displayed as Mccoy.
Another way to use this function would be to create an attribute form that combined the
first letter of someones first name with the persons full last name. The InitCap
function could be used to ensure that the first letter of the first name was capitalized. An
attribute form of this type would require the use of the functions InitCap,
ConcatBlank, Concat, and LeftStr. The definition of such an attribute form is
shown below:
ConcatBlank(Concat(LeftStr(InitCap([CUST_FIRST_NAME]),
1), "."), [CUST_LAST_NAME])
An attribute form using a definition such as the one listed above would display names
such as J. Doe, M. Smith, and L. Martinez. The InitCap function ensures that the first
letter of the first name is capitalized.

LastPosition (last position of substring)


The LastPosition function returns the starting position of the last occurrence of a
series of characters in the input string. For example, using the LastPosition function
to search for the string Strategy within the string MicroStrategy Inc. MicroStrategy
would return the value of 25.
To find the first occurrence of a series of characters in a string, see Position (position of
substring), page 233.
Syntax
LastPosition (Argument1, Argument2)
Where:
Argument1 is the string in which to search for Argument2.

228 2017, MicroStrategy Inc.


Functions Reference

Argument2 is the substring to search for.


For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.

LeftStr (left string selection)


The LeftStr function returns a substring taken as a specified number of characters
from the left of the input string. For example, if the specified length is five, LeftStr
would return the string Micro from the original string MicroStrategy. LeftStr is
useful for abbreviations or length reduction when the entire input string is not required.
Syntax
LeftStr (Argument, Length)
Where:
Argument is a metric, fact, column, or string value representing the text string(s).
Length is an integer indicating the number of characters, starting from the far left
position of the string, to be returned.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
The LeftStr function can be used to create attribute forms that use abbreviations. This
can help reduce the length for attribute forms that may have long descriptions.
For example, an LU_CUSTOMER table includes two columns: CUST_FIRST_NAME and
CUST_LAST_NAME. You create attribute forms for the customer first and last names.
You also create an attribute form that displays only the first letter of the first name. This
attribute form can be used when the full first name does not need to be displayed. The
definition of such an attribute form is shown below:
LeftStr([CUST_FIRST_NAME], 1)
The integer value of 1 causes the LeftStr function to only display the first character at
the far left position for all inputs from the CUST_FIRST_NAME column.
For an additional example of using the LeftStr function, see the example section for
the function InitCap (initial capitalization), page 227.

Length (length of string)


The Length function returns the number of characters in an input string. For example,
using the Length function on the string MicroStrategy would return a value of 13.
Length is often used to manipulate strings with the help of other string functions.
Syntax
Length(Argument)

2017, MicroStrategy Inc. 229


Functions Reference

Where:
Argument is a metric, fact, column, or string representing the text string(s).
For information on the syntax used in your specific database, w33 Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
The Length function can be used in conjunction with other string functions to
manipulate strings in various ways. For example, rather than abbreviating information to
a specific number of characters, you can abbreviate each string to only display half of the
available characters. The definition of an attribute form that displays only half of the
characters available for the first names of customers is shown below:
LeftStr([CUST_FIRST_NAME], Int(Length([CUST_FIRST_NAME])
/ 2))
For first names such as Alan, Frederick, and Jennifer, the function shown above would
display Al, Fred, and Jenn, respectively. This provides an abbreviated version of
customers first names while providing additional characters to possibly distinguish each
abbreviated name.

In the function used in this example, the Int function is used to return only the
integer part of the calculation Length([CUST_FIRST_NAME]) / 2.
Depending on your databases support for functions, you could also use functions
such as Round, Ceiling, and Floor. For information on these types of
functions, see Mathematical functions, page 317.

Lower (lower case)


The Lower function returns a string in which all alphabetic characters in an input string
are displayed as lower case. For example, using the Lower function on the string
MicroStrategy would return the string microstrategy.
Lower may be used to help standardize the display of information and make the
information more readable.
Syntax
Lower(Argument)
Where:
Argument is a metric, column, or string value representing the text string(s).
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
The Lower function can be used to display information in all lower case for attribute
forms. For example, an LU_CUSTOMER table includes an ADDRESS column. You can

230 2017, MicroStrategy Inc.


Functions Reference

create an attribute form to display all characters for a customers address in lower case.
The definition of such an attribute form is shown below:
Lower([ADDRESS])
An attribute form using a definition such as the one listed above would take input
addresses such as 10 Main Street, 350 West Elm Avenue, and 4400 Spring Road and
display them as 10 main street, 350 west elm avenue, and 4400 spring road, respectively.

LTrim (left trim)


The LTrim function returns a string in which any leading blank spaces on the left side of
the input string have been removed. For example, using the LTrim function on the
string MicroStrategy would return the string MicroStrategy.
The LTrim function helps to remove blank spaces that may have been caused by errors
in data entry. Removing these spaces helps standardize the display of information and
makes the information more readable.
Syntax
LTrim(Argument)
Where:
Argument is a metric, fact, column, or string representing the text string(s).
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
An LU_CUSTOMER table includes an ADDRESS column. You can create an attribute form
to remove any leading blank spaces from the addresses. The definition of such an
attribute form is shown below:
LTrim([ADDRESS])
Any leading blank spaces included for addresses are removed from the display for the
attribute form.
To remove both leading and trailing blank spaces, use the Trim function (Trim, page
239).

Match
The Match function uses regular expressions to search a string for a pattern of
characters and returns any matches that are found.
Syntax
Match <Group=0,Instance=1>(Argument, Find)
Where:

2017, MicroStrategy Inc. 231


Functions Reference

Argument is a metric, fact, column, or string representing the text strings that are
searched for matches.
Find is a metric, fact, column, or string that provides a regular expression used to
searched the strings returned by Argument. The regular expressions supported by
this function conform to the standards of the International Components for
Unicode. For information about these regular expression standards and syntax, see
http://userguide.icu-project.org/strings/regexp.
Group is a parameter that determines which group within the regular expression is
returned. The groups in a regular expression are each set of characters enclosed by
parentheses () and are ordered left to right. By default, the Group parameter is
defined as 0 and the entire string that is matched is returned. If you define Group as
1, only the first group from the left of the regular expression is returned. If you
define Group to a value greater than the number of groups in the regular expression,
no results are returned. For example if there is one group but Group is defined as 2,
no results are returned.
Instance is a parameter that determines which instance of the matching results
are returned. By default, Instance is defined as 1 and the first match is returned. If
you define Instance to a value greater than the number of matching results, no
results are returned. For example if there are two matches but Instance is defined
as 3, no results are returned.
For information about the syntax used in your specific database, the Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
Consider the string of text "Telephone: 703-555-1234, Fax: 704-555-6789". You can
search for and return various parts of the telephone numbers in this string using regular
expressions. The regular expression (\d+)[-\b](\d+)[-\b](\d+) breaks up the
three sets of digits in a phone number into separate groups, which can be returned using
the Match function.
See http://userguide.icu-project.org/strings/regexp for information on the regular
expression standards and syntax.
For example:
Match("Telephone: 703-555-1234, Fax: 704-555-6789", "
(\d+)[-\b](\d+)[-\b](\d+)")
By default this returns the entire string that is the first match, which is 703-555-
1234.
Match<Group=1>("Telephone: 703-555-1234, Fax: 704-555-
6789", "(\d+)[-\b](\d+)[-\b](\d+)")
This returns the first group (the first search criteria in parentheses) from the first
occurrence, which is 703.
Match<Instance=2, Group=3>("Telephone: 703-555-1234,
Fax: 704-555-6789", "(\d+)[-\b](\d+)[-\b](\d+)")

232 2017, MicroStrategy Inc.


Functions Reference

This returns the third group (the third search criteria in parentheses) from the
second occurrence, which is 6789.

Position (position of substring)


The Position function returns the starting position of the first occurrence of a series
of characters in the input string. For example, using the Position function to search
for the string Strategy within the string MicroStrategy would return the value of 6.

To find the last occurrence of a series of characters in a string, see LastPosition


(last position of substring), page 228.

In addition to locating the position of a substring, Position also can be used to test
whether the substring is present. If a given substring is not found, 0 will be returned.
Syntax
Position (Argument1, Argument2)
Where:
Argument1 is the substring to search for.
Argument2 is the string in which to search for Argument1.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
The Position function can be used in conjunction with other functions to perform
various manipulations on strings. For an example of how this function works, consider
an LU_CUSTOMER table that includes an ADDRESS column. You use the Position
function to find the word Street in the addresses as defined below.
Position("Street", [ADDRESS])
For an address of 10 Main Street, the function listed above returns the value of 9. For
addresses that do not include the word Street, a value of 0 would be returned.

RepeatStr (repeat string)


The RepeatStr function returns a character or string of characters the specified
number of times.
Syntax
RepeatStr(String, Times)
Where:
String is a metric, fact, column, or string of characters representing the characters
to be repeated.

2017, MicroStrategy Inc. 233


Functions Reference

Times is a metric, fact, column, or constant value that specifies how many times to
repeat the string of characters. A common practice is to type a constant value.
Example
RepeatStr("Hello ", 3)
This would return the string of characters "Hello Hello Hello ".

Replace
The Replace function searches a string for a pattern of characters and replaces each
instance of those characters with the new characters you specify. The resulting string
with all instances replaced is returned.
Syntax
Replace(Argument, Find, Replace)
Where:
Argument is a metric, fact, column, or string representing the text strings that are
searched.
Find is a metric, fact, column, or string representing the text strings that are
searched for within the strings returned by Argument.
Replace is a metric, fact, column, or string representing the text strings that are
used to replace any instances of the string from Find that are included in the strings
returned by Argument.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.

RightStr (right string selection)


The RightStr function returns a substring taken as a specified number of characters
from the right of the input string. For example, the first eight characters from the right
of the string MicroStrategy would be Strategy.
RightStr can be used to create attribute forms that display only part of the information
available. This can be helpful when some information needs to be hidden for security
purposes, as in the credit card example below.
Syntax
RightStr (Argument, Length)
Where:
Argument is a metric, fact, column, or string representing the text string(s).
Length is an integer indicating the number of characters to be returned.

234 2017, MicroStrategy Inc.


Functions Reference

For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
An LU_CUSTOMER table includes a CREDIT_CARD_NUMBER column that contains credit
card numbers for online customers. You create attribute forms to display only the last
four digits of the customers credit card numbers. The definition of such an attribute
form is shown below:
RightStr([CREDIT_CARD_NUMBER], 4)
The integer value of 4 causes the RightStr function to only display the last four
characters from the CREDIT_CARD_NUMBER column.
You could also combine this functionality with the Concat function to display Xs or
other characters to represent the digits for the credit card that are not displayed.
Concat(XXXX-XXXX-XXXX-, RightStr([CREDIT_CARD_NUMBER],
4))
This definition would modify the display of a credit card number from 1111-2222-3333-
4444 to be displayed as XXXX-XXXX-XXXX-4444.

RTrim (right trim)


The RTrim function returns a string in which blank spaces on the right side of the input
string have been removed. For example, using the RTrim function on the string
MicroStrategy would return the string MicroStrategy.
RTrim helps to remove trailing blank spaces, which may have been caused by errors in
data entry. Removing these spaces helps standardize the display of information and
makes the information more readable.
Syntax
RTrim(Argument)
Where:
Argument is a metric, fact, column, or string representing the text string(s).
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
An LU_CUSTOMER table includes an ADDRESS column. You can create an attribute form
to remove any trailing blank spaces from the addresses. The definition of such an
attribute form is shown below:
RTrim([ADDRESS])

2017, MicroStrategy Inc. 235


Functions Reference

Any trailing blank spaces included in the addresses are removed from the display for the
attribute form.
To remove both leading and trailing blank spaces, use the Trim function (Trim, page
239).

Split
The Split function searches a string, separates the contents into groups of characters
based on a delimiter, and returns the string of characters requested. For example, you
can search a string of characters that separates values with commas, and return the
characters after the first comma. Searching the string "red, yellow, green" and selecting
to return the second set of characters based on a comma as the delimiter returns "yellow
".
Syntax
Split<SeparatorRegex=False>(String, Delimiter, Index)
Where:
String is a metric, fact, column, or string representing the text strings that are
searched.
Delimiter is a metric, fact, column, or string that determines the characters used
to separate each concatenated value. A common practice is to provide a constant text
value for the delimiter. Typing , uses a comma as the delimiter.
You can also choose to use regular expressions to define the delimiter characters. For
information on supporting regular expressions, see the SeparatorRegex
parameter described below.
If the delimiter character is not found in the string of characters, one of two
resolutions can occur:
If you define Index as 1, then the entire string of characters is returned.
If you define Index as any value other than 1, a NULL value is returned.
Index is a metric, fact, column, or constant value that determines which group of
characters are returned. A common practice is to provide a constant numerical value.
For example, using a value of 1 returns the first group of characters before the first
delimiter characters are found in the string.
SeparatatorRegex is a parameter that determines if a regular expression is used
to provide the delimiter characters. The regular expressions supported by this
function conform to the standards of the Intern a ion al Components for Unicode.
For information about these regular expression standards and syntax, see
http://userguide.icu-project.org/strings/regexp.
Example
Split<SeparatorRegex=True>("red yellow green", "\s", 2)

236 2017, MicroStrategy Inc.


Functions Reference

This returns the string of characters "yellow". By using the regular expression \s,
any white space character is considered a delimiter. This splits the string into the
strings "red", "yellow", and "green".
Split("red; yellow; green", ";" 1)
This returns the string of characters "red".
Split("red; yellow; green", ";" 3)
This returns the string of characters " green".
Split("red; yellow; green", ";" 4)
This returns a NULL value, since the string is only split into three separate strings.

SubStr (substring selection)


The SubStr function returns a substring taken as a specified sequence of characters
from the input string. SubStr is useful for isolating a specific section of a string that
contains relevant information.
Syntax
SubStr(Argument, Position, Length)
Where:
Argument is a metric, fact, column, or string representing the text string(s).
Position is an integer indicating the starting position inside the string.
Length is an integer indicating the number of characters to be returned.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
An LU_ITEM table includes an ITEM_ID column. This column stores a ten-digit
number, which has been created to define various facts about the item. This includes two
digits which identify the location in which the item is sold. These two digits always start
at the fourth digit from the left side of the ten-digit item ID number. To retrieve these
digits and determine the location of sale for an item, you can create an attribute form to
return these two digits. The definition of such an attribute form is shown below:
SubStr(ITEM_ID, 4, 2)
The substring retrieved starts at the fourth digit and retrieves two characters. For an item
ID of 2334560897, this function returns 45.

TitleCap (title capitalization)


The TitleCap function returns a string in which the first letter of every word in the
input string is capitalized. All other letters that are not the first letter in a word appear in

2017, MicroStrategy Inc. 237


Functions Reference

lower case. This can help to fix capitalization errors in information that is displayed for
attribute forms, metrics, and other objects.
A word in a string is any string of alphabetic characters that are separated by a non-
alphabetic character such as a space, comma, or number.

To capitalize only the first letter of the first word in a string, see InitCap (initial
capitalization), page 227.

Syntax
TitleCap(Argument)
Where:
Argument is a metric, column, or string value representing the text string.
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
TitleCap(john smith)
This example would return John Smith.
TitleCap(john SMITH)
This example would also return John Smith.

ToNumber (convert string to a number)


The ToNumber function converts a string of characters to its applicable numeric value.
Converting data that has been processed as a string to a numeric value allows you to
perform various calculations and analysis that can be done only with numeric values.
Syntax
ToNumber(Argument)
Where:
Argument is a fact, metric, column, or constant value that provides the strings that
are converted to numeric values. The function can recognize E notation and return
the appropriate number.
Example
ToNumber("1001")
This example returns the numeric value 1001.
ToNumber("1.48e12")
This example returns the numeric value 1,480,000,000,000.

238 2017, MicroStrategy Inc.


Functions Reference

ToString (convert number, date, or timestamp to a


string)
The ToString function converts a number, date, or timestamp to a string of characters.
Converting data that has been processed as a numeric, date, or timestamp value to a
string allows you to view and display the data in different ways.
Syntax
ToString<Pattern=null>(Argument)
Where:
Argument is a fact, metric, column, or constant value that provides the values that
are converted to a string of characters.
Pattern is a parameter that determines the formatting for the resulting string of
characters. When providing a pattern, enclose the pattern in double quotes (""). For
example:
ToString<pattern="0,000.00">(Revenue)
To specify a pattern, you can use the custom numeric, date, and time formatting
symbols that are described in the Advanced Reporting Guide.
Example
ToString<pattern="0,000.00">(1001)
This example returns the string "1,001.00".

Trim
The Trim function returns a string in which blank spaces on either side of the input
string have been removed. For example, using the Trim function on the string
MicroStrategy would return the string MicroStrategy.
The Trim function helps to remove leading and trailing blank spaces, which may have
been caused by errors in data entry. Removing these spaces helps standardize the display
of information and makes the information more readable.
Syntax
Trim(Argument)
Where:
Argument is a metric, fact, column, or string representing the text string(s).
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example

2017, MicroStrategy Inc. 239


Functions Reference

An LU_CUSTOMER table includes an ADDRESS column. You can create an attribute form
to remove any leading and trailing blank spaces from the addresses. The definition of
such an attribute form is shown below:
Trim([ADDRESS])
Any leading or trailing blank spaces included in the addresses are removed from the
display for the attribute form.

Upper (upper case)


The Upper function returns a string in which all alphabetic characters in an input string
are displayed as upper case. For example, using the Upper function on the string
MicroStrategy would return the string MICROSTRATEGY. The Upper function can
be used to display information in all upper case for attribute forms.
Syntax
Upper(Argument)
Where:
Argument is a metric, column, or string representing the text string(s).
For information on the syntax used in your specific database, see Appendix A,
MicroStrategy and Database Support for Functions and see the section that
corresponds to your database.
Example
An LU_CUSTOMER table includes an ADDRESS column. You can create an attribute form
to display all characters for a customers address in upper case. The definition of such an
attribute form is shown below:
Upper([ADDRESS])
An attribute form using a definition such as the one listed above would take input
addresses such as 10 Main Street, 350 West Elm Avenue, and 4400 Spring Road and
display them as 10 MAIN STREET, 350 WEST ELM AVENUE, and 4400 SPRING
ROAD, respectively.

240 2017, MicroStrategy Inc.


3
OPERATORS
The operators described in this chapter are building block functions. They provide the
means to perform simple mathematical operations, compare values, search strings, and
evaluate logical conditions.

Operators may not be available for direct selection when creating MicroStrategy
objects such as metrics. These operators are employed to support the logic of
metrics, filters, thresholds, and so on.

The following categories of operators are covered in this chapter:


Arithmetic operators, page 241
Comparison operators, page 243
Comparison for rank operators, page 251
Logical operators, page 255

Arithmetic operators
The arithmetic operators are basic mathematical functions, such as Minus, Times,
Divide, Plus, and Unary Minus, which are among the most commonly used operators. A
brief description of each operator follows.

Minus (-)
Returns the difference between two values.
Syntax
Arg1 - Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, big decimals,
date/time, or functions that return numbers or big decimals. Both Arg1 and Arg2 must
be of the same data type, with the exception if Arg1 is a Date data type. In this case,
Arg2 must be a number.
Example

2017, MicroStrategy Inc. 241


Functions Reference

A metric is defined as:


Revenue - Freight
This metric returns the difference between the revenue and freight charges.

Times (*)
Returns the product of two values.
Syntax
Arg1 * Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers or big
decimals, or functions that return numbers or big decimals.
Example
A metric is defined as:
([Unit Profit] * [Units Sold])
This metric returns the product of the unit profit and the units sold values.

Divide (/)
Returns the quotient when one value is divided by another.
Syntax
Arg1 / Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers or big
decimals, or functions that return numbers or big decimals. In addition, Arg2 must not
be zero.
Example
A metric is defined as:
(Profit / [Units Sold])
This metric returns the quotient of the profit and number of units sold.

Plus (+)
Returns the sum of two values.
Syntax
Arg1 + Arg2

242 2017, MicroStrategy Inc.


Functions Reference

Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers or big
decimals, or functions that return numbers and big decimals. In addition, if either of the
two arguments is date/time, the other argument must be a number.
Example
A metric is defined as:
Cost + Freight
This metric returns the sum of the cost and the freight charges.

Unary minus (U-)


Returns the absolute value of a negative value or the negative value of a positive value.
Syntax
U-(Arg)
Where:
Arg is an attribute, fact, metric representing a list of numbers, or a function that returns
numbers and big decimals.
Example
A metric is defined as:
U-(Profit)
This metric changes the sign of the profit value. If the profit value is negative, it returns a
positive value. If the profit value is positive, it returns a negative value.

Comparison operators
These operators are used to compare values, which can be numbers, text strings, date
and time, expressions, or operators that return any values of the mentioned data types. A
brief description of each operator follows. The comparison patterns of text strings may
or may not be case-sensitive depending on the database implementation.

Less than (<)


Returns TRUE if the first value is less than the second value.
Syntax
Arg1 < Arg2
Where:

2017, MicroStrategy Inc. 243


Functions Reference

Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, text strings,
date/time, or functions that return literal values. Arg1 and Arg2 must be of the same
data type.
Example
A condition is defined as:
Profit < Cost
This condition returns TRUE only if the profit is less than the cost.

Less than or equal (<=)


Returns TRUE if the first value is less than or equal to the second value.
Syntax
Arg1 <= Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, text strings,
date/time, or functions that return literal values. Arg1 and Arg2 must be of the same
data type.
Example
A condition is defined as:
Profit <= Cost
This condition returns TRUE only if the profit is less than or equal to the cost.

Not equal (<>)


Returns TRUE if two given values are not equal to each other.
Syntax
Arg1 <> Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, text strings,
date/time, or functions that return literal values. Arg1 and Arg2 must be of the same
data type.
Example
A condition is defined as:
Profit <> Cost
This condition returns TRUE only if the profit is not equal to the cost.

244 2017, MicroStrategy Inc.


Functions Reference

Equal (=)
Returns TRUE if the two given values are equal to each other.
Syntax
Arg1 = Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, text strings,
date/time, or functions that return literal values. Arg1 and Arg2 must be of the same
data type.
Example
A condition is defined as:
Profit = Cost
This condition returns TRUE if the profit is equal to the cost.

Greater (>)
Returns TRUE if the first value is greater than the second value.
Syntax
Arg1 > Arg2
Where:
Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, text strings,
date/time, or functions that return literal values. Arg1 and Arg2 must be of the same
data type.
Example
A condition is defined as:
Profit > Cost
This condition returns TRUE only if the profit is greater than the cost.

Greater than or equal (>=)


Returns TRUE if the first value is greater than or equal to the second value.
Syntax
Arg1 >= Arg2
Where:

2017, MicroStrategy Inc. 245


Functions Reference

Arg1 and Arg2 are attributes, facts, metrics representing a list of numbers, text strings,
date/time, or functions that return literal values. Arg1 and Arg2 must be of the same
data type.
Example
A condition is defined as:
Profit >= Cost
This condition returns TRUE only if the profit is greater than or equal to the cost.

Begins with
Returns TRUE if a text string begins with a specified text pattern.

For the definition and syntax of the BeginsWith string function, which can be used
to create attribute forms, see BeginsWith, page 224.

Syntax
Arg1 Begins With Arg2
Where:
Arg1 and Arg2 are text strings.

The text pattern comparison may or may not be case sensitive depending on the
database implementation.

Example
Region@DESC Begins with "North"
Returns TRUE for Regions that start with North, such as Northeast and Northwest.

Between
Returns TRUE if the specified value is between the inclusive range of two boundaries.
Between can be used to test if a value is within a valid data range.
Syntax
Value Between Boundary1 and Boundary2
Where:
Value, Boundary1, and Boundary2 can be numbers, date/time, text, or functions
that return the mentioned data types. Value, Boundary1 and Boundary2 must be
of the same data type.
Example
M1 Between 1 and 1000
region@DESC Between "A" and "Z"

246 2017, MicroStrategy Inc.


Functions Reference

date@DESC Between '1999-2-12' and '2005-2-23'

Contains
Returns TRUE if a text string contains a specified text pattern.
Syntax
Arg1 Contains Arg2
Where:
Arg1 and Arg2 must be of data type Text.
Example
Employee@[Last Name] Contains "Smith"
Returns TRUE for Employees with a last name such as Smith, Smithson, and so on.

Ends with
Returns TRUE if a text string ends with a specified text pattern.

For the definition and syntax of the EndsWith string function, which can be used
to create attribute forms, see EndsWith, page 227.

Syntax
Arg1 Ends With Arg2
Where:
Arg1 and Arg2 must be of data type Text.
Example
Employee@[Last Name] Ends with "son"
Returns TRUE for Employees with a last name that ends with son, such as Wilson,
Johnson, and so on.

In
Returns TRUE if a value is contained in a specified list of values.
Syntax
Arg1 In Arg2
Where:
Arg2 is a list of the literals with the same data type as Arg1. It can be of the data type
numbers, big decimals, text, date/time, or functions that return these data types.
Examples

2017, MicroStrategy Inc. 247


Functions Reference

Employee@[Last Name] in {"Smith", "Cooper", "Michael"}


Year in {2000, 2001, 2002}

Like
Returns TRUE if a text string matches a specified text pattern; otherwise, returns FALSE.
Depending on whether you use wildcards and how they are used in the text in the
pattern, Like can be used in place of Begins With, Ends With, Contains, or =.
This operator is used to search for related strings.
Syntax
Arg1 Like Arg2
Where:
Arg1 and Arg2 must be of data type Text.
Usage notes
Using wildcards with the Like operator allows you to search for more than just a static
set of text. For example, rather than searching for the exact text pattern South, you can
use wildcards to search for any text pattern that includes South, such as Mid Southern,
SouthEast, and South.
The Like operator can be processed by the MicroStrategy Analytical Engine, or it can be
passed to the database to be processed using the databases own comparison support. You
can determine if the Like operator was processed by the MicroStrategy Analytical
Engine or passed to the database by viewing the SQL view of a report. If the Like
operator is included in the SQL of the report, the database performed the comparison.
By contrast, if the Like operator is not included in the SQL of the report, or the Like
operator is part of retrieving results from an Intelligent Cube (see the In-memory
Analytics Guide for reporting on Intelligent Cubes), then the MicroStrategy Analytical
Engine processed the Like operator. Wildcard support depends on how the Like
operator is processed:
If the MicroStrategy Analytical Engine processes the Like operator, the following
wildcard characters are supported:
The % character can be used to represent any number of characters. For
example, using the comparison Like 'Sout%' returns TRUE for South,
SouthEast, and Southern.
The _ character can be used to represent a single character. For example, using
the comparison Like 'Sout_' returns TRUE for South but returns FALSE for
SouthEast and Southern.
The / character can be used as an escape character for the %, _, or / characters,
which means it can be used prior to these wildcard characters to search for the
character rather than to use it as a wildcard. To search for the characters %, _, or
/, you must include a single / character before the character you are searching
for. For example, to search for the exact text User_ID, you would need to use
the comparison Like 'User/_ID'.

248 2017, MicroStrategy Inc.


Functions Reference

The * character can be used to represent any number of characters. For


example, using the comparison Like Sout* returns TRUE for South,
SouthEast, and Southern. The * character also acts as its own escape character,
which means it can be used prior to another * to search for asterisks in text
patterns. For example, to search for the exact text User*, you would need to use
the comparison Like 'User**'.
If the database processes the Like operator, the database determines how wildcards
are supported. In general, many databases support the same wildcard characters and
escape characters that are listed above as supported by the MicroStrategy Analytical
Engine. However, some databases do not support / as an escape character and
instead use an alternative such as enclosing the wildcard character in brackets. For
example, a database may support using [%] to search for the % character. Therefore,
if the Like operator is being processed by the database, see your third-party database
documentation to verify which wildcards can be used as part of a comparison.
Example
Region@DESC like 'South'
Returns TRUE if region is South.
Region@DESC like 'South%'
Returns TRUE if region is South, SouthEast, and so on.
Region@DESC like '%South%'
Returns TRUE if region is Mid Southern, SouthEast, South, and so on.
Region@DESC like 'D_g'
Returns TRUE if region is Dog, Dig, Dug, and so on.
Region@DESC like 'D*g'
Returns TRUE if region is Dog, Drag, Drug, and so on.

Not begins with


Returns TRUE if a text string does not begin with a specified text pattern.
Syntax
Arg1 Not Begins With Arg2
Where:
Arg1 and Arg2 must be of data type Text.
Example
Region@DESC Not Begins with "South"
Returns TRUE if region is Northeast, North, and so on.

2017, MicroStrategy Inc. 249


Functions Reference

Not between
Returns TRUE if a specified value does not lie in between two given boundaries.
Syntax
Value Not Between Boundary1 and Boundary2
Where:
Value, Boundary1, and Boundary2 must be of the same data type. They can be of
any data type that MicroStrategy supports.
Example
Year not between 2000 and 2005
Returns TRUE if Year = 1999

Not contains
Returns TRUE if a text string does not contain the specified text pattern.
Syntax
Arg1 Not Contains Arg2
Where:
Arg1 and Arg2 must be of Text data type.
Example
Region@DESC Not Contains "South"
Returns TRUE if region is North, West, and so on.

Not ends with


Returns TRUE if a text string does not end with the specified text pattern.
Syntax
Arg1 Not Ends With Arg2
Where:
Arg1 and Arg2 must be of Text data type.
Example
Region@DESC Not Ends With "East"
Returns TRUE if region is Northwest, West, and so on.

250 2017, MicroStrategy Inc.


Functions Reference

Not in
Returns TRUE if a given value is not in the specified list of values.
Syntax
Arg1 not in Arg2
Where:
Arg2 must be a list with one or more elements. Arg1 must be of the same data type as
the elements in Arg2. Arg1 and Arg2 can be of any data type that MicroStrategy
supports.
Example
Year not in (2002, 2003)
Returns TRUE if year is 2000, 2001, and so on.

Not like
Returns TRUE if a text string does not match the specified text pattern; otherwise,
returns FALSE.
Syntax
Arg1 Not Like Arg2
Where:
Arg1 and Arg2 must be of data type Text.
Example
Region@DESC not like South%
Returns TRUE if region is Northeast, North, Mid South, and so on.

Comparison for rank operators


These operators compare rank values. The Comparison for rank operators are:
Less than or equal enhanced (*<=), page 252
Not equal enhanced (*<>), page 252
Equal enhanced (*=), page 253
Greater than or equal enhanced (*>=), page 253
Between enhanced (*Between), page 254
Not between enhanced (Not *Between), page 254

2017, MicroStrategy Inc. 251


Functions Reference

Less than or equal enhanced (*<=)


Returns TRUE for values in a list which are less than or equal to a specified condition.
The list values are generated from the Rank function.
Syntax
ValueList *<= Condition
Where:
ValueList is the list of the rank values of a metric.
Condition is the value to be compared.
Example
Build a Set Qualification filter with
Metric: M1
Function: Rank
Operator: *<=
Value: 2
Returns TRUE for the values of M1 whose rank values are less than or equal to 2.

Not equal enhanced (*<>)


Returns TRUE for values in a list which are not equal to a specified condition. The list
values are generated from the Rank function.
Syntax
ValueList *<> Condition
Where:
ValueList is the list of the rank values of a metric.
Condition is the value to be compared.
Example
Build a Set Qualification filter with
Metric: M1
Function: Rank
Operator: *<>
Value: 2
Returns TRUE for the values of M1 whose rank values are not equal to 2.

252 2017, MicroStrategy Inc.


Functions Reference

Equal enhanced (*=)


Returns TRUE for values in a list which are equal to a specified condition. The list values
are generated from the Rank function.
Syntax
ValueList *= Condition
Where:
ValueList is the list of the rank values of a metric.
Condition is the value to be compared.
Example
Build a Set Qualification filter with
Metric: M1
Function: Rank
Operator: *=
Value: 2
Returns TRUE for the values of M1 whose rank values are equal to 2.

Greater than or equal enhanced (*>=)


Returns TRUE for values in a list which are greater than or equal to a specified condition.
The list values are generated from the Rank function.
Syntax
ValueList *>= Condition
Where:
ValueList is the list of the rank values of a metric.
Condition is the value to be compared.
Example
Build a Set Qualification filter with
Metric: M1
Function: Rank
Operator: *>=
Value: 2
Return TRUE for the values of M1 whose rank values are greater than or equal to 2.

2017, MicroStrategy Inc. 253


Functions Reference

Between enhanced (*Between)


Returns TRUE for the values in a list of values that are in a specified range. The values are
generated from the Rank function.
Syntax
ValueList *Between Condition1 and Condition2
Where:
ValueList is the list of the rank values of a metric.
Condition1 and Condition2 set the range of values to be compared.
Usage notes
*Between is inclusive which means any value greater than or equal to Condition1 and less
than or equal to Condition2 will return TRUE.
Example
Build a Set Qualification filter with
Metric: M1
Function: Rank
Operator: *between
Value: 2 and
Value: 8
Returns TRUE for the values of M1 whose rank values are between 2 and 8.

Not between enhanced (Not *Between)


Returns TRUE if a list of rank values is not within a specified range. The values are
generated from the Rank function.
Syntax
ValueList Not *Between Condition1 and Condition2
Where:
ValueList is the list of the rank values of a metric.
Condition1 and Condition2 set the range of values to be compared.
Usage notes
Values equal to Condition1 and Condition2 are not satisfied with the condition.
Example
Build a Set Qualification filter with

254 2017, MicroStrategy Inc.


Functions Reference

Metric: M1
Function: Rank
Operator: *Not between
Value: 2 and
Value: 8
Return TRUE for the values of M1 whose rank values are less than 2 or greater than 8.

Logical operators
The logical operators allow certain conditions to be applied to two sets of filter
expressions simultaneously.

And
Returns TRUE if both the specified conditions are TRUE; otherwise, returns FALSE.
Syntax
Arg1 And Arg2
Where:
Arg1 and Arg2 are conditional expressions. The condition can contain metrics,
comparison and logical operations, functions, and constants. The condition must be
evaluated as TRUE or FALSE.
Example
A condition is defined as:
(Cost < 1000) And (Freight < 500)
This condition will return TRUE only if both, the Cost is less than 1000, and the Freight
is less than 500.

IF
Returns a value if the specified condition is TRUE; otherwise, a default value is returned.
This is a single value function.
Syntax
IF (Condition, TrueBranch, FalseBranch)
Where:
Condition is the conditional expression. The condition can contain metrics,
comparison and logical operations, and constants. The condition must be evaluated
to be TRUE or FALSE.

2017, MicroStrategy Inc. 255


Functions Reference

TrueBranch is a constant or metric value to return if the condition is TRUE.


FalseBranch is a constant or metric value to return if the condition is FALSE.
Usage notes
FalseBranch must be provided; otherwise the return value is undefined.
Example
A metric is defined as:
IF ((Total Revenue < 300000), 0, 1)
This metric returns 0 if the Total Revenue is less than 300,000; otherwise, it returns 1.

Not
Returns TRUE if the specified condition is FALSE, and FALSE if the condition is TRUE.
Syntax
Not(Arg1)
Where:
Arg1 is the conditional expression. The condition can contain metrics, comparison and
logical operations, and constants. The condition must be evaluated as TRUE or FALSE.
Example
A condition is defined as:
Not ((Profit <= 0))
This condition returns TRUE only if the profit is greater than zero.

Or
Returns FALSE if both the specified conditions are FALSE; else returns TRUE.
Syntax
Arg1 Or Arg2
Where:
Arg1 and Arg2 are conditional expressions. The condition can contain metrics,
comparison and logical operations, and constants. The condition must be evaluated as
TRUE or FALSE.
Example
A condition is defined as:
(Cost <= 1000) Or (Freight <= 500)

256 2017, MicroStrategy Inc.


Functions Reference

This condition returns FALSE only if the Cost is greater than 1000, and the Freight is
greater than 500.

2017, MicroStrategy Inc. 257


4
PLUG-IN PACKAGE
FUNCTIONS
The functions in this chapter represent the more advanced functions available in
MicroStrategy, including data mining, financial, mathematical, and statistical functions.
For more information on the plug-in functions and how to install the Function Plug-in
Wizard, see Using custom plug-in functions, page 69.
Each section briefly describes the category of function and then lists each function along
with information designed to provide data necessary for understanding and
implementing an individual function. The information provided for each function
includes:
An explanation of the data returned by the function
The syntax of the function including function name, the available parameters, the
parameter setting defaults, and the types of data possible for use with the function
The mathematical expression illustrating exactly how the calculation is defined in
MicroStrategy (if applicable)
Usage notes describing any error conditions, invalid data types, or key items to know
before using the function (if applicable)
An example of the function in use; this can be either a report example or a simple
text description of the data returned based on the specified input
For a list of databases and the functions they support, see Appendix A, MicroStrategy
and Database Support for Functions.
The following categories of functions are covered:
Data mining functions, page 259
Financial functions, page 261
Mathematical functions, page 317
Statistical functions, page 334

2017, MicroStrategy Inc. 258


Functions Reference

Data mining functions


Data mining generally refers to examining a large amount of data to extract valuable
information. The data mining process uses predictive models based on existing and
historical data to project potential outcome for business activities and transactions.
MicroStrategy Data Mining Services facilitates the development and deployment of these
predictive models.
Data mining is covered in the Data Mining Services chapter of the Advanced Reporting
Guide. The Data Mining Services chapter introduces MicroStrategy Data Mining
Services, which includes these features:
Using MicroStrategy and the Training Metric Wizard to create multi-variable
regression predictive models
Support for importing third-party predictive models using the PMML industry
standard
A Predictive Model Viewer that visualizes the predictive model
A set of sample predictive metrics and reports incorporated into Customer Analysis
Module (CAM)
In addition, the Data Mining Services chapter of the Advanced Reporting Guide
describes the process of how to create and use predictive models with MicroStrategy and
provides a business case for illustration.
The data mining functions that are available within MicroStrategy are employed when
using standard MicroStrategy Data Mining Services interfaces and techniques, which
includes the Training Metric Wizard and importing third-party predictive models. To
ensure proper functionality, it is recommended to use these MicroStrategy data mining
functions within the Data Mining Services interfaces and techniques, rather than
manually defining the values and parameters for these functions.

Functions for R integration


MicroStrategy supports the integration and deployment of analytics from the R statistical
environment to Analytics Desktop. Customers interested in deploying analytics from the
R programming language into MicroStrategy can do so using the R Integration Pack,
available separately from the CodePlex open source community web site. For more
information, go to http://www.codeplex.com and search for the RIntegrationPack
project.
The third-party R environment is freely available, as a separate download, from
http://CRAN.R-project.org.
Once you have downloaded and configured the R Integration Pack, there are several
functions available in MicroStrategy Analytics Desktop that allow you to deploy your R
analytics. These functions include:

For the functions listed below, scalars are variables with a single value while
vectors are variables with one or more values.

259 2017, MicroStrategy Inc.


Functions Reference

RScript: Supports R scripts that use vectors for the inputs and output. Sorting is
also supported.
RScriptAgg: Supports R scripts that use vectors for the inputs and a scalar output.
Sorting is also supported.
RScriptAggU: Supports R scripts that use vectors for the inputs and a scalar
output. This is a version of the RScriptAgg function that does not include sorting.
RScriptSimple: Supports R scripts that use scalar for the inputs and output.
Sorting is not supported.
RScriptU: Supports R scripts that use vectors for the inputs and output. This is a
version of the RScript function that does not include sorting.
The easiest way to create a metric expression that utilizes these functions
A metric expression that can then be used in a derived metric to include the statistical
analysis of an R script on a dashboard in Analytics Desktop. The R Integration Pack
User Guide provides steps to use the deployR utility to create metric expressions for R
scripts.
When defining these functions in MicroStrategy Analytics Desktop, you have the
following options:
Value1, ..., ValueN: The MicroStrategy metrics that act as inputs for the R
script.
BooleanParam1, ..., BooleanParam9: A set of boolean parameters that
allow you to pass boolean values into R scalar values that do not change from
execution to execution. If you use any boolean parameters in your R script, you can
define the default value for the parameter when using the function in Analytics
Desktop.
NumericParam1, ..., NumericParam9: A set of numeric parameters that
allow you to pass numeric values into R scalar values that do not change from
execution to execution. If you use any numeric parameters in your R script, you can
define the default value for the parameter when using the function in Analytics
Desktop.
StringParam1, ..., StringParam9: A set of string parameters that allow you
to pass numeric values into R scalar values that do not change from execution to
execution. If you use any string parameters in your R script, you can define the
default value for the parameter when using the function in Analytics Desktop.
_WorkingDir: The R scripts working directory, which is used to store various
supporting files.
_OutputVar: The R variable that is used as the output for the metric. If there is
more than one output, the first output is considered the default output unless
otherwise specified here.
_NullsAllowed: Controls whether records containing null values are to be passed
in as inputs to your analytic:
True (default): Null values are included in the analysis.
False: All records containing null values are eliminated from the analysis.

2017, MicroStrategy Inc. 260


Functions Reference

_CheckInputCount: Controls whether MicroStrategy ensures that the number of


inputs to the metric exactly matches exactly the number of inputs specified in the
functions signature:
True (default): If the number of inputs is different, a warning message is
returned when using the R script in MicroStrategy.
False: If the number of inputs is different, the script execution will attempt to
proceed.
_RScriptFile: The directory where the R script file is stored.
_InputNames: The MicroStrategy metric names that are used as inputs to the R
script. For the R environment to be able to use the MicroStrategy metric names in
objects and graphics that R generates, the names associated with the inputs from
MicroStrategy need to be passed to R.
_Params: For internal use only.
BreakBy: The logical level where the calculation of values for an expression restarts.
You can select the break by attribute from the drop-down list.
SortBy: Controls the sorting of records before the data is passed to R. To specify a
particular sorting criterion, you can select the sort by value from the drop-down list.
Use the button to the right of the drop-down list to define whether the sort is
ascending or descending.

Financial functions
The financial functions plug-in package in MicroStrategy provides access to many
standard financial calculations. All finance-related calculations are performed by the
MicroStrategy Analytical Engine, regardless of the database environment.

Accrint (accrued interest)


Accrued interest is interest that has accumulated over a period of time, but has not yet
been paid. This function returns the amount of accrued interest on a security that pays
periodic interest.
Syntax
Accrint <Par = 1000, Basis> (Issue, FirstInterest,
Settlement, Rate, Frequency)
Where:
Issue is the issue date.
FirstInterest is the first date on which interest is accrued.
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Rateis the annual coupon rate.

261 2017, MicroStrategy Inc.


Functions Reference

Par is a parameter that indicates the par value. The default, and only valid value is
1000.
Frequency is the number of coupon payments per year. The valid values are, 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.

2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
Ai is the number of accrued days for the ith quasi-coupon period within an odd
period
NC is the number of quasi-coupon periods that fit an odd period (if this period
contains a fraction, that fraction is rounded up to the nearest integer)
NLi is the normal length, in days, of the ith quasi-coupon period within an odd
period
Usage notes
If Issue, FirstInterest, Settlement, or Frequency is not an integer, it is truncated
The engine returns an empty cell if:
Issue, FirstInterest, or Settlement is not a valid date
Par 1000
Issue Settlement

2017, MicroStrategy Inc. 262


Functions Reference

Frequency is a value other than 1, 2, or 4


The Issue date, the FirstInterest date and the Settlement date should be included
within single quotations in the expression for the expression to be considered as a
valid expression
Example
This example displays the expression built using Accrint for a treasury bond with the
following terms:
March 22, 2003, issue date
June 20, 2003, first interest date
September 16, 2003, settlement date
10.0 percent coupon
$1,000 par value
Frequency is semiannual
Basis is 30/360
The accrued interest is defined as:
Accrint <Par=1000, Basis=0>
(3/22/2003,9/16/2003,6/20/2003,0.1,2) {~+}
Expression

Where:
Ai is the number of accrued days for the ith quasi-coupon period within an odd
period
NC is the number of quasi-coupon periods that fit an odd period (if this period
contains a fraction, that fraction is rounded up to the nearest integer)
NLi is the normal length, in days, of the ith quasi-coupon period within an odd
period
Usage notes
If Issue, FirstInterest, Settlement, or Frequency is not an integer, it is truncated
The engine returns an empty cell if:
Issue, FirstInterest, or Settlement is not a valid date
Par 1000

263 2017, MicroStrategy Inc.


Functions Reference

Issue Settlement
Frequency is a value other than 1, 2, or 4
The Issue date, the FirstInterest date and the Settlement date should be included
within single quotations in the expression for the expression to be considered as a
valid expression
Example
This example displays the expression built using Accrint for a treasury bond with the
following terms:
March 22, 2003, issue date
June 20, 2003, first interest date
September 16, 2003, settlement date
10.0 percent coupon
$1,000 par value
Frequency is semiannual
Basis is 30/360
The accrued interest is defined as:
Accrint <Par=1000, Basis=0>
(3/22/2003,9/16/2003,6/20/2003,0.1,2) {~+}

Accrintm (accrued interest at maturity)


Accrued interest is interest that has accumulated over a period of time, but has not yet
been paid. This function returns the accrued interest amount on a security that pays
periodic interest at maturity.
Syntax
Accrintm <Par = 1000, Basis> (Issue, Maturity, Rate)
Where:
Issue is the issue date.
Maturity is the maturity date. This is the date on which the coupon expires.
Rateis the annual coupon rate.
Par is a constant that indicates the par value. The default, and only valid, value is
1000.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

2017, MicroStrategy Inc. 264


Functions Reference

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
A is the accrued time (for interest-at-maturity items, the value used is the number of
days from issue to maturity)
D is the annual-yield basis
Usage notes
If Issue or Maturity is not an integer, it is truncated.
The engine returns an empty cell if
Issue or Maturity is not a valid date
Rate0
Par 1000
The Issue date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.
Example
This example displays the expression built using the Accrintm function for a note with
the following terms:
March 22, 2001, issue date
June 20, 2003, maturity date
10.0 percent coupon
$1,000 par value
Frequency is semiannual
Basis is Actual/365
The accrued interest at maturity is defined as:

265 2017, MicroStrategy Inc.


Functions Reference

Accrintm <Par=1000, Basis=3>


(3/22/2001,6/20/2001,0.1){~+}
Expression

Where:
A is the accrued time (for interest-at-maturity items, the value used is the number of
days from issue to maturity)
D is the annual-yield basis
Usage notes
If Issue or Maturity is not an integer, it is truncated.
The engine returns an empty cell if
Issue or Maturity is not a valid date
Rate 0
Par 1000
The Issue date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.
Example
This example displays the expression built using the Accrintm function for a note with
the following terms:
March 22, 2001, issue date
June 20, 2003, maturity date
10.0 percent coupon
$1,000 par value
Frequency is semiannual
Basis is Actual/365
The accrued interest at maturity is defined as:
Accrintm <Par=1000, Basis=3>
(3/22/2001,6/20/2001,0.1){~+}

Coupdaybs (coupon period, beginning to settlement)


Returns the number of days from the beginning of a coupon period to the settlement
date.
Syntax

2017, MicroStrategy Inc. 266


Functions Reference

Coupdaybs <Basis> (Settlement, Maturity, Frequency)


Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Frequency is the number of coupon payments per year. The valid values are 1,2 and
4 where annual payments =1, semiannual payments =2, and quarterly payments =4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes
If an argument is not an integer, it is truncated.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Usage notes
If an argument is not an integer, it is truncated.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Coupdays (coupon period, number of days with


settlement)
Returns the number of days in the coupon period that contains the settlement date.
Syntax
Coupdays <Basis> (Settlement, Maturity, Frequency)
Where:

267 2017, MicroStrategy Inc.


Functions Reference

Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturityis the maturity date. This is the date on which the security expires.
Frequency is the number of coupon payments per year. The valid values are 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.

1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes
The number of days between milestones is computed depending on the chosen day
basis
Coupon functions are defined against the maturity day, depending on frequency
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression
Usage notes
The number of days between milestones is computed depending on the chosen day
basis
Coupon functions are defined against the maturity day, depending on frequency
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression

Coupdaysnc (coupon period, settlement to next


coupon)
Returns the number of days from the settlement date to the next coupon date.
Syntax

2017, MicroStrategy Inc. 268


Functions Reference

Coupdaysnc <Basis = 0> (Settlement, Maturity, Frequency)


Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturityis the maturity date. This is the date on which the security expires.
Frequency is the number of coupon payments per year. The valid values are 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes
If an argument is not an integer, it is truncated.
The engine returns an empty cell if
Settlement or Maturity is not a valid date.
Frequency is a number other than 1, 2, or 4.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Usage notes
If an argument is not an integer, it is truncated.
The engine returns an empty cell if
Settlement or Maturity is not a valid date.
Frequency is a number other than 1, 2, or 4.
Settlement Maturity.

269 2017, MicroStrategy Inc.


Functions Reference

The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Coupncd (next date after settlement)


Returns a number that represents the next coupon date after settlement.
Syntax
Coupncd <Basis> (Settlement, Maturity, Frequency)
Where:
Settlementis the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Frequencyis the number of coupon payments per year. The valid values are 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes
If an argument is not an integer, it is truncated.
The engine returns an empty cell if:
Settlement or Maturityis not a valid date.
Frequencyis a number other than 1, 2, or 4.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Usage notes

2017, MicroStrategy Inc. 270


Functions Reference

If an argument is not an integer, it is truncated.


The engine returns an empty cell if:
Settlement or Maturity is not a valid date.
Frequency is a number other than 1, 2, or 4.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Coupnum (coupon, number payable between


settlement and maturity)
Returns the number of coupons payable between the settlement date and maturity date,
rounded up to the nearest whole coupon.
Syntax
Coupnum <Basis> (Settlement, Maturity, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturityis the maturity date. This is the date on which the security expires.
Frequency is the number of coupon payments per year. The valid values are, 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/360) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes

271 2017, MicroStrategy Inc.


Functions Reference

The number of days between milestones is computed depending on the chosen day
basis.
Coupon functions are defined against the maturity day, depending on frequency.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Usage notes
The number of days between milestones is computed depending on the chosen day
basis.
Coupon functions are defined against the maturity day, depending on frequency.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Couppcd (coupon date, previous)


Returns a number that represents the coupon date before settlement date.
Syntax
Couppcd <Basis> (Settlement, Maturity, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Frequencyis the number of payments per year. The valid values are 1, 2, and 4
where annual payments =1, semiannual payments =2, and quarterly payments =4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes

2017, MicroStrategy Inc. 272


Functions Reference

If an argument is not an integer, it is truncated.


The engine returns an empty cell if:
Settlement or Maturity is not a valid date.
Frequencyhas a value other than 1, 2, or 4.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Usage notes
If an argument is not an integer, it is truncated.
The engine returns an empty cell if:
Settlement or Maturity is not a valid date.
Frequency has a value other than 1, 2, or 4.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Cumipmt (cumulative interest paid)


Returns the cumulative interest paid on a loan over a specified period of time.
Syntax
Cumipmt <Type = 0> (Rate, Nper, Pv, Start, End)
Where:
Rate is the interest rate.
Nperis the total number of payment periods.
Pv is the present loan value.
Start is the first period in the calculation. Payment period counting begins at 1.
End is the last period in the calculation.
Type is the timing of the payment.
Usage notes
Consistency is important when specifying Rate and Nper:
For monthlypayments on a four-year loan at an annual interest rate of 12%, Rate
= 12%/12; Nper = 4 12.
For annual payments on a four-year loan at an annual interest rate of 12%, Rate
= 12%; Nper = 4.

273 2017, MicroStrategy Inc.


Functions Reference

If Nper, Start, End, or Type is not an integer, it is truncated.


The engine returns an empty cell if:
Rate 0, Nper 0, or Pv0
Start < 1 or End< 1
Start>End
Type 0
Example
A home mortgage loan has the following terms:
Interest rate: 9.00 percent per annum (rate = 9.00% 12 = 0.0075)
Term: 30 years (nper = 30 12 = 360)
Present value: $125,000
The total interest paid in the second year of payments (periods 13 through 24) is defined
as follows:
CUMIPMT(0.0075,360,125000,13,24) equals -11135.23
The interest paid in a single payment in the first month is defined as follows:
CUMIPMT(0.0075,360,125000,1,1) equals -937.50

Cumprinc (cumulative principal paid)


Returns the cumulative principal paid on a loan over a specified period of time.
Syntax
Cumprinc <Type = 0> (Rate, Nper, Pv, Start, End)
Where:
Rate is the interest rate.
Nper is the total number of payment periods.
Pv is the present loan value.
Start is the first period in the calculation. Payment period counting begins at 1.
End is the last period in the calculation.
Type is a parameter that indicates the timing of the payment.
Usage notes
Consistency is important when specifying Rate and Nper:
For monthly payments on a four-year loan at an annual interest rate of 12%,
Rate = 12%/12; Nper = 4 12.

2017, MicroStrategy Inc. 274


Functions Reference

For annual payments on a four-year loan at an annual interest rate of 12%, Rate
= 12%; Nper = 4.
If Nper, Start, End, or Type is not an integer, it is truncated.
The engine returns an empty cell if
Rate 0, Nper 0, or Pv 0
Start< 1 or End < 1
Start > End
Type 0
Example
A home mortgage loan has the following terms:
Interest rate: 9.00 percent per annum (rate = 9.00% 12 = 0.0075)
Term: 30 years (nper = 30 12 = 360)
Present value: $125,000
The total principal paid in the second year of payments (periods 13 through 24) is defined
as follows:
CUMPRINC(0.0075,360,125000,13,24) equals -934.1071
The principal paid in a single payment in the first month is defined as follows:
CUMPRINC(0.0075,360,125000,1,1) equals -68.27827

Db (fixed-declining balance (asset depreciation))


Returns the depreciation of an asset for a specified period, using the fixed-declining-
balance method. This is a method of accelerated depreciation which is faster than
straight line depreciation early in the life of the asset.
Syntax
Db <Month> (Cost, Salvage, Life, Period)
Where:
Cost is the initial cost of the asset.
Salvage is the value of the asset at the end of the depreciation period.
Life is the number of periods over which the asset is depreciated. This is sometimes
referred to as the useful life of an asset.
Period is the period of time over which depreciation is calculated.
Month is an integer indicating the number of months in the first year.
Expression

275 2017, MicroStrategy Inc.


Functions Reference

To calculate depreciation over any given period:

Where:

To calculate depreciation for the first period:

To calculate depreciation for the last period:

Ddb (double-declining balance (asset depreciation))


Returns the depreciation of an asset for a specified period, using the double-declining-
balance method. Double declining balance is a method of accelerated depreciation that is
twice as fast as the straight line depreciation method.
Syntax
Ddb <Factor> (Cost, Salvage, Life, Period)
Where:
Cost is the initial cost.
Salvage is the cost at the end of depreciation.
Life is the number of periods over which depreciation occurs.
Period is the period for which depreciation is calculated.
Factor is the rate at which the balance declines.
Expression

Usage notes
All arguments must be positive values.
The double-declining balance method computes depreciation at an accelerated rate:
depreciation is highest during the first period and decreases with each succeeding
period.

Disc (discount rate for a security)


Returns the discount rate on a security. The discount rate is used to calculate the present
value of expected or future benefits and costs.

2017, MicroStrategy Inc. 276


Functions Reference

Syntax
Disc <Basis> (Settlement, Maturity, Price, Redemption)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Price is the price per $100 of face value.
Redemption is the redemption value per $100 of face value.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.

4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
Bis the number of days in a year (see Basis)
DSM is the number of days between settlement and maturity
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if
Settlement or Maturity is not a valid date.
Price 0 or Redemption 0.
Settlement Maturity.

277 2017, MicroStrategy Inc.


Functions Reference

The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Expression

Where:
B is the number of days in a year (see Basis)
DSM is the number of days between settlement and maturity
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if
Settlement or Maturity is not a valid date.
Price 0 or Redemption 0.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Dollarde (dollar price, converted from fraction to


decimal)
Converts a dollar price expressed as a fraction into a dollar price expressed as a decimal
number.
Syntax
Dollarde (FractionalDollar, Decimal)
Expression

Where:
price is the dollar value to be converted
fraction is the fraction denominator value as an integer

Dollarfr (dollar price, converted from decimal to


fraction)
Converts a dollar price expressed as a decimal into a dollar price expressed as a fraction.
Syntax

2017, MicroStrategy Inc. 278


Functions Reference

Dollarfr (DecimalDollar, Fraction)


Where:
DecimalDollar is the dollar value to be converted
Fraction is the fraction denominator value as an integer

Duration
Returns the Macauley duration for an assumed par value of $100. Duration is the
weighted average of the present value of the cash flows and is used as a measure of a
bond prices response to changes in yield. Bonds with higher durations face higher risk
from changes in interest rates.
Syntax
Duration <Basis> (Settlement, Maturity, CouponRate,
YieldRate, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
CouponRate is the annual interest rate of the coupon.
YieldRateis the annual yield.
Frequency is the number of coupon payments per year. The valid values are 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

279 2017, MicroStrategy Inc.


Functions Reference

Where:
DSC is the number of days from settlement to next coupon date
E is the number of days in settlements coupon period
N is the number of coupons from settlement to maturity
Usage notes
The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.

Effect (effective annual interest rate)


Returns the effective annual interest rate on a given amount. This is the actual annual
rate or yield on a loan.
Syntax
Effect(NominalRate, Npery)
Where:
NominalRate is the nominal interest rate.
Npery is the number of compounding periods per year.
Expression

Usage notes
If Npery is not an integer, it is truncated.
The engine returns an empty cell if
Either argument is nonnumeric.
NominalRate 0.

2017, MicroStrategy Inc. 280


Functions Reference

Npery <= 1.

Fv (future value)
Returns the future value of an investment based on periodic, constant payments and a
constant interest rate. The future value is equal to the present value plus the amount of
accumulated interest that would be earned. This can be applied to future payments, with
interest calculated for each payment.
Syntax
Fv <Type> (Rate, Nper, Pmt, Pv)
Where:
Rate is the interest rate per period.
Nper is the total number of payment periods.
Pmt is the (fixed) amount paid each period. This typically includes principal and
interest, but no other fees or taxes.
Pv is the present value (lump-sum amount) of future payments. If no value is
provided, it is assumed to be 0 (zero).
Type is a parameter that indicates when payments are due.
Usage notes
In all cases, disbursements, such as deposits, are represented by negative numbers;
funds received, such as dividends, are represented by positive numbers.
Use the Fvschedule function for payments made with a variable or adjustable interest
rate.

Fvschedule (future value schedule)


Returns the future value of an initial principal after a series of compound-interest rates
are applied. Use this function to calculate the future value of an investment that has a
variable or adjustable rate.
Syntax
Fvschedule <Basis> (Argument, PV)
Where:
Argument is a set of applicable interest rates.
PV is the present value of the investment.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

281 2017, MicroStrategy Inc.


Functions Reference

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes
If Argument is nonnumeric, the engine returns an empty cell.
Use the Fv function for payments made with a constant interest rate.
Usage notes
If Argument is nonnumeric, the engine returns an empty cell.
Use the Fv function for payments made with a constant interest rate.

Intrate (interest rate)


Returns the interest rate for a fully invested security. The interest rate is the percentage
value that is multiplied by the principal to determine the amount of interest due or paid
in a given period of time.
Syntax
Intrate <Basis> (Settlement, Maturity, Investment,
Redemption)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Investment is the amount invested in the security.
Redemption is the amount actually received for the security.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

2017, MicroStrategy Inc. 282


Functions Reference

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
Redemption is the amount actually received for the security
Investment is the amount invested in the security
B is the number of days in a year, depending on year basis
DIM is the number of days from settlement to maturity
Usage notes
The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.
Expression

Where:
Redemption is the amount actually received for the security
Investment is the amount invested in the security
B is the number of days in a year, depending on year basis
DIM is the number of days from settlement to maturity
Usage notes
The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.

283 2017, MicroStrategy Inc.


Functions Reference

Ipmt (interest payment)


Returns the interest payment for a given period, based on periodic, constant payments
and a constant interest rate.
Syntax
Ipmt < FV, Type> (Rate, Period, Nperiod, PV)
Where:
Rate is the interest rate per period.
Period is the period for which the interest payment is sought. The valid range is
from 1 to Nperiod.
Nperiod is the total number of payment periods.
PV is the present value. This is the total value that a series of future payments has
today.
FV is a parameter that indicates the future value, also called the cash balance,
expected after the last payment is made.
Type is a parameter that indicates when payments are due.
Usage notes
For this function, consistency in the units used is necessary:
Assuming monthly payments on a four-year loan at 12% annual interest, Nperiod
should be 4 12.
Assuming annual payments on a four-year loan at 12% annual interest, Nperiod
should be 4.
For this function, disbursements (such as deposits to savings) are represented by
negative numbers; funds received (such as dividend checks) are represented by
positive numbers.

IRR (internal rate of return)


Returns the internal rate of return on a set of payments. The internal rate of return is
the interest rate received for an investment consisting of payments that occur
periodically. These payments do not need to be equal in value, but they must occur at
regular intervals, such as monthly, quarterly, or annually.
To calculate the internal rate of return for payments that do not occur at regular
intervals, see XIRR (internal rate of return for payments at irregular intervals), page
309.
Syntax
IRR <FactID, Guess, METHOD, Precision, SortBy> (Argument)
Where:

2017, MicroStrategy Inc. 284


Functions Reference

FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Guess is a parameter that indicates an estimate assumed to be close to the result
sought. The default value is 0.1, which can be thought of as representing an
expected internal rate of return of 10 percent.
Method is a parameter that determines the algorithm used to calculate the IRR
function. You can use the following values:
0 (default): The IRR function uses the secant method to determine the internal
rate of return. This is the recommended method as it can adjust the initial guess
as required to return a result.
1: The IRR function uses Newtons method to determine the internal rate of
return. This method can return results similar to those returned for internal rate
of return functions that are supplied with Microsoft Excel.
Precision is a parameter that determines how close the evaluation of a potential
solution must be to zero to be considered valid.
Argument is a fact or metric representing a list of numbers for which the internal
rate of return is sought.
SortBy is a parameter that defines the order of calculation. For more information
see BreakBy and SortBy parameters, page 33.
Usage notes
The list of values must contain at least one positive entry and one negative entry.
Payments, whether positive or negative, must be entered in the desired sequence, as
this is the order in which entries are interpreted for calculation.

Mduration (modified duration)


Returns the modified Macauley duration, which is the weighted average of present
payments, for a security with an assumed par value of $100. This function is used as a
measure of bond-price response to variations in yield.
Syntax
Mduration <Basis> (Settlement, Maturity, CouponRate,
YieldRate, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the date of maturity. This is the date on which the security expires.
CouponRate is the annual interest rate of the coupon.
YieldRateis the annual yield.

285 2017, MicroStrategy Inc.


Functions Reference

Frequency is the number of coupon payments per year. The valid values are 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis used. The default value for
Basis is 0, which is typically used by American agencies and assumes 30-day
months and 360-day years (30/360). Possible values for this parameter are listed in
the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.

4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
yld is the security annual yield
frequency is the number of coupon payments per year
Usage notes
If Settlement, Maturity, or Frequency is not an integer, it is truncated.
The engine returns an empty cell if:
Either Settlement or Maturity is not a valid date.
CouponRate < 0.
YieldRate < 0.
Frequency is a number other than 1, 2, or 4.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

2017, MicroStrategy Inc. 286


Functions Reference

MIRR (modified internal rate of return)


Returns the modified internal rate of return on a set of periodic payments. This function
takes into consideration both the cost of investment and the interest received on
investment.
To calculate the internal rate of return for payments that do not occur at regular
intervals, see XIRR (internal rate of return for payments at irregular intervals), page
309.
Syntax
MIRR <FactID> (Argument, FinancialRate, ReinvestRate)
Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Argumentis a list of values containing a set of numbers. Entries in this list can
represent payments (negative values) or income (positive values) occurring at regular
intervals.
FinancialRate is the interest rate paid.
ReinvestRate is the interest rate received on reinvested funds.
Expression

Usage notes
If Argument does not contain at least one positive entry (income) and one negative
entry (payments), the engine returns an empty cell.
In calculating the return for this function, the order in which entries are provided is
assumed to be the order in which funds flow; it is important, therefore, that
payments and income be entered in the correct sequence.

Nominal (nominal annual interest rate)


Returns the nominal annual interest rate on an investment, based on the effective rate
and the number of compounding periods per year. This is the interest rate that is not
adjusted for actual or expected inflation.
Syntax
Nominal(EffectiveRate, Npery)
Where:
EffectiveRateis the effective interest rate.

287 2017, MicroStrategy Inc.


Functions Reference

Npery is the number of compounding periods per year.


Expression

Usage notes
If Npery is not an integer, it is truncated.
The engine returns an empty cell if
Either argument is nonnumeric.
EffectiveRate 0.
Npery < 1.

Nper (number of investment periods)


Returns the number of periods for an investment, based on periodic, constant payments
and a constant interest rate.
Syntax
Nper <Type> (Rate, Pmt, PV, FV)
Where:
Rate is the internal rate for each period.
Pmt is the amount paid each period. Typically it includes principal and interest, but
no other fees or taxes.
PV is the present value of a series of future payments. If this value is omitted, is
assumed to be 0 (zero).
FV is the value that remains after the last payment is made.
Type is a number that indicates when payments are due.

NPV (net present value of an investment)


Returns the net present value of an investment based on a discount rate and a set of
future payments (negative values) and income (positive values).
All payments and incomes must be equally spaced in time, and occur at the end of each
period. To calculate the net present value of an investment in which payments and
income do not occur at regular intervals, see XNPV (net present value of an investment
for payments or incomes at irregular intervals), page 311.
Syntax
NPV <FactID, SortBy> (Argument, Rate)

2017, MicroStrategy Inc. 288


Functions Reference

Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
SortBy is a parameter that defines the order of calculation. For more information
see BreakBy and SortBy parameters, page 33.
Argument is a fact or metric representing a list of values containing either payment
or income figures.
Rateis the discount rate for the length of a period.
Expression

Where:
nis the number ofentries in Values.
Usage notes
All entries in Values must be equally spaced in time, and occur at the end of each
period.
The order of the entries in Values is assumed to be the order in which funds flow;
payment and income entries must, therefore, be provided in the correct sequence.
Investment begins one period before the date on which the first entry in Values
occurs, and ends with the last entry in that array.
If the first entry in Values occurs at the beginning of a period, it must be added to
the result of the function.
The primary differences between this function and the Present Value (PV) function
are that
PV allows fund flow to occur either at the beginning or at the end of a period.
PV fund-flow occurrences must be constant across the life of the investment.

Oddfprice (odd-first-period price)


Returns the price per $100 face value of a security having an odd (short or long) first
period.
Syntax
Oddfprice <Basis> (Settlement, Maturity, Issue,
FirstCoupon, CouponRate, YieldRate, Redemption,
Frequency)

289 2017, MicroStrategy Inc.


Functions Reference

Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the date of maturity. This is the date on which the security expires.
Issue is the issue date.
FirstCoupon is the first-coupon date.
CouponRate is the annual interest rate of the coupon.
YieldRate is the annual yield.
Redemption is the redemption value per $100 of face value.
Frequency is the number of coupon payments per year. The valid values are 1, 2,
and 4 where annual payments =1, semiannual payments =2, and quarterly payments
=4.
Basis is a parameter that indicates the time-count basis used. The default value for
Basis is 0, which is typically used by American agencies and assumes 30-day
months and 360-day years (30/360). Possible values for this parameter are listed in
the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.

1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression
There are two expressions for this function:
Odd Short First Coupon: for securities with a short first period
Odd Long First Coupon: for securities with a long first period
Odd Short First Coupon

Where:

2017, MicroStrategy Inc. 290


Functions Reference

A is the number of days from beginning of coupon period to settlement date (accrued
days)
DSC is the number of days from settlement to next coupon date
DFC is the number of days from the beginning of odd first coupon to first coupon
date
E is the number of days in coupon period
N is the number of coupons payable between settlement date and redemption date; if
this number contains a fraction, it is raised to the next whole number
Odd Long First Coupon

Where:
Ai is the number of days from beginning of the ith quasi-coupon period within odd
period
DCi is the Number of days from date to first quasi-coupon (i=1) or number of days
in quasi-coupons (i=2,..., i=NC)
DSC is the Number of days from settlement to next coupon date
E is the Number of days in coupon period
N is the Number of coupons payable between the first real coupon date and
redemption date; if this number contains a fraction, it is raised to the next whole
number
NC is the Number of quasi-coupon periods that fit in odd period; if this number
contains a fraction it is raised to the next whole number
NLi is the Normal length in days of the full ith quasi-coupon period within odd
period
Nq is the Number of whole quasi-coupon periods between settlement date and first
coupon
Usage notes
The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.
Expression
There are two expressions for this function:
Odd Short First Coupon: for securities with a short first period
Odd Long First Coupon: for securities with a long first period

291 2017, MicroStrategy Inc.


Functions Reference

Odd Short First Coupon

Where:
A is the number of days from beginning of coupon period to settlement date (accrued
days)
DSC is the number of days from settlement to next coupon date
DFC is the number of days from the beginning of odd first coupon to first coupon
date
E is the number of days in coupon period
N is the number of coupons payable between settlement date and redemption date; if
this number contains a fraction, it is raised to the next whole number
Odd Long First Coupon

Where:
Ai is the number of days from beginning of the ith quasi-coupon period within odd
period
DCi is the Number of days from date to first quasi-coupon (i=1) or number of days
in quasi-coupons (i=2,..., i=NC)
DSC is the Number of days from settlement to next coupon date
E is the Number of days in coupon period
N is the Number of coupons payable between the first real coupon date and
redemption date; if this number contains a fraction, it is raised to the next whole
number
NC is the Number of quasi-coupon periods that fit in odd period; if this number
contains a fraction it is raised to the next whole number
NLi is the Normal length in days of the full ith quasi-coupon period within odd
period
Nq is the Number of whole quasi-coupon periods between settlement date and first
coupon
Usage notes

2017, MicroStrategy Inc. 292


Functions Reference

The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.

Oddfyield (odd-first-period yield)


Returns the yield of a security that has an odd (short or long) first period.
Syntax
Oddfyield <Basis> (Settlement, Maturity, Issue,
FirstCoupon, CouponRate, Price, Redemption, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Issue is the issue date.
FirstCoupon is the first coupon date.
CouponRate is the annual interest rate of the coupon.
Price is the price.
Redemption is the redemption value per $100 of face value.
Frequency is the number of payments per year. The valid values are 1, 2, and 4
where annual payments =1, semiannual payments =2, and quarterly payments =4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Usage notes
If Settlement, Maturity, Issue, or FirstCoupon is not an integer, it is truncated.
The engine returns an empty cell if:

293 2017, MicroStrategy Inc.


Functions Reference

Settlement, Maturity, Issue, or FirstCoupon is not a valid date


CouponRate < 0
Price 0
The following date-related condition is not satisfied: Maturity > FirstCoupon >
Settlement > Issue
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Oddlprice (odd-last-period price)


Returns the price per $100 face value of a security having an odd (short or long) last
period.
Syntax
Oddlprice <Basis> (Settlement, Maturity, LastInterest,
CouponRate, YieldRate, Redemption, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
LastInterest is the last date on which interest is accrued.
CouponRate is the annual interest rate of the coupon.
YieldRate is the annual yield.
Redemption is the redemption value per $100 of face value.
Frequency is the number of payments per year. The valid values are 1, 2, and 4
where annual payments =1, semiannual payments =2, and quarterly payments =4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

2017, MicroStrategy Inc. 294


Functions Reference

Expression

Where:
Ai is the Number of accrued days for the ith quasi-coupon period within odd period
counting forward from last interest date before redemption
DCiis the Number of days counted in each ith quasi-coupon period as delimited by
the length of the actual coupon period
NC is the Number of quasi-coupon periods that fit in odd period; if this number
contains a fraction, it is raised to the next whole number
NLi is the Normal length in days of the ith quasi-coupon period within odd coupon
period
DSCi is the Number of days from settlement (or beginning of quasi-coupon period)
to next quasi coupon within odd period (or to maturity date) for each ith quasi-
coupon period.
Usage notes
The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.

Oddlyield (odd-last-period yield)


Returns the yield of a security that has an odd (short or long) last period.
Syntax
Oddlyield <Basis> (Settlement, Maturity, LastInterest,
CouponRate, Price, Redemption, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
LastInterest is the securitys last coupon date.
CouponRate is the interest rate.
Price is the price.
Redemption is the redemption value per $100 of face value.

295 2017, MicroStrategy Inc.


Functions Reference

Frequency is the number of payments per year. The valid values are 1, 2, and 4
where annual payments =1, semiannual payments =2, and quarterly payments =4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.

4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
Ai is the number of accrued days for the ith, or last, quasi-coupon period within odd
period counting forward from last interest date before redemption.
DCi is the number of days counted in the ith, or last, quasi-coupon period as
delimited by the length of the actual coupon period.
NC is the number of quasi-coupon periods that fit in odd period; if this number
contains a fraction, it is raised to the next whole number.
NLiis the normal length in days of the ith, or last, quasi-coupon period within odd
coupon period.
Usage notes
The date arguments should be included within single quotations for the expression to be
considered as a valid expression.

Pmt (payment)
Returns the payment cost on a loan, based on constant payments and a constant interest
rate.

2017, MicroStrategy Inc. 296


Functions Reference

Syntax
Pmt <FV, Type> (Rate, Nper, PV)
Where:
FV a parameter that indicates the future value of the loan. It is the balance to be
attained once all payments are made.
Type is parameter that indicates when payment is due.
Rate is the interest rate.
Nper is the number of payments.
PV is the present value of the loan, also referred to as principal. This is the current
value of a set of future payments.
Usage notes
Values returned by this function include principal and interest; they do not include
taxes, reserve payments, or ancillary fees.
Units must be used consistently when calculating payment. For example:
To calculate monthly payments on a four-year loan at 12% annual interest, Rate
should be 12%/12, Nper should be 4 12.
To calculate annual payments on the same loan, Rate should be 12%, Nper
should be 4.
This function can also be used to determine payments on annuities other than loans.

Ppmt (principal payment)


Returns the payment on the principal for an investment for one given period.
Syntax
Ppmt <Type = 0> (Rate, Per, Nper, PV, FV)
Where:
Type is a parameter thatindicates when payment is due.
Rate is the interest rate.
Per is the period desired.
Nper is the number of payments.
PV is the present value of the loan.
FV is the future value of the loan.
Expression

297 2017, MicroStrategy Inc.


Functions Reference

Where:
i is the period desired

Price (price per $100 face value)


Returns the price, per $100 face value, on a security that pays periodic interest.
Syntax
Price <Basis> (Settlement, Maturity, CouponRate,
YieldRate, Redemption, Frequency)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
CouponRate is the annual interest rate.
YieldRate is the annual yield.
Redemption is the redemption value per $100 of face value.
Frequency is the number of payments per year. The valid values are 1, 2, and 4
where annual payments =1, semiannual payments =2, and quarterly payments =4
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

2017, MicroStrategy Inc. 298


Functions Reference

Where:
DSC is the number of days from settlement to next coupon date
E is the number of days in the coupon period in which the settlement date falls
N is the number of coupons payable between the settlement date and the redemption
date
A is the number of days from the beginning of the coupon period to settlement date
Usage notes
If Settlement, Maturity, or Frequency is not an integer, it is truncated.
The engine returns an empty cell if:
Settlement or Maturity is not a valid date
CouponRate < 0 or YieldRate < 0
Redemption 0
Frequency has a value other than 1, 2, or 4
Settlement Maturity
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Pricedisc (price, discounted)


Returns the price, per $100 face value, on a discounted security.
Syntax
Pricedisc <Basis> (Settlement, Maturity, DiscRate,
Redemption)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
DiscRate is the discount rate.
Redemption is the redemption value per $100 of face value.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

299 2017, MicroStrategy Inc.


Functions Reference

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

Where:
B is the number of days in a year (see Basis)
DSM is the number of days from settlement to maturity
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if:
Settlement or Maturity is not a valid date.
DiscRate 0 or Redemption 0.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Expression

Where:
B is the number of days in a year (see Basis)
DSM is the number of days from settlement to maturity
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if:
Settlement or Maturity is not a valid date.

2017, MicroStrategy Inc. 300


Functions Reference

DiscRate 0 or Redemption 0.
Settlement Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Pricemat (price at maturity)


Returns the price, per $100 of face value, on a security that pays interest at maturity.
Syntax
Pricemat <Basis> (Settlement, Maturity, Issue,
CouponRate, YieldRate)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Issue is the issue date. It is expressed as a serial date.
CouponRate is the interest rate on the date of issue.
YieldRate is the annual yield.
Basis is a parameter that indicates the time-count basis to be used. The default value
for Basis is 0, which is typically used by American agencies and assumes 30-day
months and 360-day years (30/360). Possible values for this parameter are listed in
the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 (actual/actual) Assumes actual number of days in each month, actual number of days in each
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

301 2017, MicroStrategy Inc.


Functions Reference

Where:
B is the number of days in a year (see Basis)
DSM is the number of days from settlement to maturity
DIM is the number of days from issue to maturity
A is the number of days from issue to settlement
Usage notes
If Settlement, Maturity, or Issue is not an integer, it is truncated.
The engine returns an empty cell if
Settlement, Maturity, or Issue is not a valid date.
Rate < 0 or Yield < 0.
Settlement Maturity.
The Settlement date, the Maturity date, and the Issue date should be included within
single quotations in the expression for the expression to be considered as a valid
expression.
Expression

Where:
B is the number of days in a year (see Basis)
DSM is the number of days from settlement to maturity
DIM is the number of days from issue to maturity
A is the number of days from issue to settlement
Usage notes
If Settlement, Maturity, or Issue is not an integer, it is truncated.
The engine returns an empty cell if
Settlement, Maturity, or Issue is not a valid date.
Rate < 0 or Yield < 0.
Settlement Maturity.

2017, MicroStrategy Inc. 302


Functions Reference

The Settlement date, the Maturity date, and the Issue date should be included within
single quotations in the expression for the expression to be considered as a valid
expression.

Pv (present value)
Returns the present value of an investment.
Syntax
Pv <Type> (Rate, Nper, Pmt, FV)
Where:
Type is a value that indicates when payment is due.
Rate is the interest rate.
Nper is the number of payments.
Pmt is the periodic payment for an annuity.
FV is the future value of the loan.
Expression
If rate = 0

Else

Rate (interest rate per period)


Returns the interest rate per period on a given annuity.
Syntax
Rate <FV, Type, Guess> (Nperiod, Payment, PV)
Where:
FV is the future value (also called cash balance) expected after the last payment.
Type indicates when payments are due.
Guess is an estimate assumed to be close to the result sought.
Nperiod is the total number of payment periods.
Payment is the payment made for each period. Cannot change over the life of the
annuity. Typically, includes principal and interest, but no other fees or taxes.

303 2017, MicroStrategy Inc.


Functions Reference

PV is the present value of the annuity. It is the total amount that a series of future
payments is worth today.
Usage notes
For this function, consistency in the units used is necessary:
Assuming monthly payments on a four-year loan at 12% annual interest, Nperiod
should be 4 12.
Assuming annual payments on a four-year loan at 12% annual interest, Nperiod
should be 4.

Received (amount received at maturity)


Returns the amount received at maturity on a fully invested security.
Syntax
Received <Basis> (Settlement, Maturity, Investment,
Discount)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the date of maturity. This is the date on which the security expires.
Investment is the amount invested.
Discountis the discount rate.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application

0 (30/360) Assumes 30 days in each month, 360 days in each year.


1 Assumes actual number of days in each month, actual number of days in each
(actual/actual) year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
4 (30/60) Used by European agencies, assumes the same values as 0 for American
institutions.

Expression

2017, MicroStrategy Inc. 304


Functions Reference

Where:
B is the number of days in a year (see Basis)
DIM is the number of days between settlement and maturity
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if
Settlement or Maturityis not a valid date.
Investment0.
Discount0.
Maturity Settlement.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.
Expression

Where:
B is the number of days in a year (see Basis)
DIM is the number of days between settlement and maturity
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if
Settlement or Maturity is not a valid date.
Investment 0.
Discount 0.
Maturity Settlement.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Sln (straight-line depreciation)


Returns the straight-line depreciation of an asset over a given period. This is the simplest
method of depreciation and represents an equal amount charged for each period during
the useful life of the asset after allowing for a salvage value.
Syntax

305 2017, MicroStrategy Inc.


Functions Reference

Sln(Cost, Salvage, Life)


Where:
Cost is the initial cost of the asset.
Salvage, also called the salvaged value of an asset, is the residual value at the end of
the estimated life span.
Life, also called the useful life of an asset, is the number of periods over which the
asset is being depreciated.

Syd (sum of years digits depreciation)


Returns the sum of years digits depreciation of an asset over a specified period. This
method of accelerated depreciation results in higher depreciation early in the life of an
asset. It calculates the depreciation for each year on an inverted scale in proportion to
the total of all the digits for the assets useful life.
Syntax
Syd < > (Cost, Salvage, Life, Period)
Where:
Cost is the initial cost.
Salvage, also called the salvaged value of an asset,is the residual value at the end of
the estimated life span.
Life, also called the useful life of an asset,is the number of periods over which the
asset is being depreciated.
Period is the depreciation period. This must have the same number of units as Life.
Expression

Tbilleq (T-bill equity)


Returns the bond-equivalent yield of a Treasury bill.
Syntax
Tbilleq(Settlement, Maturity, Discount)
Where:
Settlement is the settlement date. This is the date on which the security is traded.
Maturity is the maturity date. This is the date on which the treasury bill expires.
Discount is the discount rate.
Expression

2017, MicroStrategy Inc. 306


Functions Reference

Where:
DSM is the number of days between settlement and maturity on 360-day basis.
Usage notes
The Settlement date and the Maturity date should be included within single quotations in
the expression for the expression to be considered as a valid expression.

Tbillprice (T-bill price)


Returns the price of a treasury bill per $100 of face value.
Syntax
Tbillprice(Settlement, Maturity, Discount)
Where:
Settlement is the settlement date. This is the date on which the treasury bill is
purchased.
Maturity is the maturity date. This is the date on which the treasury bill expires.
Discount is the discount rate.
Expression

Where:
DSM is the number of days from settlement to maturity.
This excludes any maturity date that is more than one calendar year past Settlement.
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if:
Either Settlement or Maturity is not a valid date.
Discount0.
Settlement > Maturity.
Maturity is more than one year after Settlement.

307 2017, MicroStrategy Inc.


Functions Reference

The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Tbillyield (T-bill yield)


Returns the yield of a treasury bill.
Syntax
Tbillyield < > (Settlement, Maturity, Price)
Where:
Settlement is the settlement date. This is the date on which the treasury bill is
purchased.
Maturity is the maturity date. This is the date on which the treasury bill expires.
Price is the price per $100 of face value
Expression

Where:
DSM is the number of days from settlement to maturity.
This excludes any maturity date that is more than one calendar year past Settlement.
Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if:
Either Settlement or Maturity is not a valid date.
Price 0.
Settlement > Maturity.
Maturity is more than one year after Settlement.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Vdb (variable declining balance)


Returns the depreciation of an asset over a specified period, including partial periods.
Syntax
Vdb <Factor> (Cost, Salvage, Life, Period)
Where:

2017, MicroStrategy Inc. 308


Functions Reference

Factor is the rate at which balance declines.


Cost is the initial cost of the asset.
Salvage is the value at the end of the depreciation period.
Life is the number of periods over which depreciation is calculated.
Period is the first period for which depreciation is calculated. This must use the
same number of units as Life.
Usage notes
All values must be positive.

XIRR (internal rate of return for payments at irregular


intervals)
Returns the internal rate of return on a set of payments that do not occur at regular
intervals. The internal rate of return is the interest rate received for an investment
consisting of payments. These payments do not need to be equal in value, and do not
need to occur at regular intervals.
To calculate the internal rate of return for payments that occur at regular intervals, see:
IRR (internal rate of return), page 284: Internal rate of return for periodic
payments.
MIRR (modified internal rate of return), page 287: Modified internal rate of return
for periodic payments, which takes into consideration both the cost of investment
and the interest received on investment.
Syntax
XIRR <FactID, Guess, SortBy> (Payment, Dates)
Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Guess is a parameter that indicates an estimate assumed to be close to the result
sought. The default value is 0.1, which can be thought of as representing an
expected internal rate of return of 10 percent.
Payment is a fact or metric representing a list of numbers for which the internal
rate of return is sought.
Dates is a fact or metric representing a list of dates for the payments that are
included. Ensure that these values use a date/time format.
Usage notes
The list of values must contain at least one positive entry and one negative entry.

309 2017, MicroStrategy Inc.


Functions Reference

The XIRR function uses the secant method to determine the internal rate of return,
which adjusts the initial guess as required to return a result. The final result must be
within 0.000001 percent to be considered valid.
Payments, whether positive or negative, must be entered in the desired sequence, as
this is the order in which entries are interpreted for calculation.

Example
You have an investment where payments are made at irregular intervals. This payment
and payment date information is included in MicroStrategy and displayed on the simple
report shown below:

Since the dates are not at regular intervals such as monthly or quarterly, you cannot use
the IRR function to determine the internal rate of return. Instead, you can use the XIRR
function, which also evaluates the date of each payment to determine an internal rate of
return. A new metric is added to the report which uses the following definition:
XIRR(Payment, Date){}
The new report now includes this information, as shown below:

2017, MicroStrategy Inc. 310


Functions Reference

The internal rate of return considering the payments and the dates of those payments is
21.93. Notice that while there is a single value for XIRR, it is displayed on every row. One
way to simplify the display of this information is to include this data on a dashboard. You
can include the XIRR result in a text field along with additional visualizations of the data,
as shown below.

XNPV (net present value of an investment for payments


or incomes at irregular intervals)
Returns the net present value of an investment based on a discount rate and a set of
future payments (negative values) and income (positive values).
These payments or incomes do not need to occur at regular intervals. To calculate the
net present value of an investment for payments and incomes that occur at regular
intervals, see NPV (net present value of an investment), page 288).
Syntax

311 2017, MicroStrategy Inc.


Functions Reference

XNPV <FactID> (Payments, Dates, Rate)


Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Payments is a fact or metric representing a list of values containing either payment
or income figures.
Dates is a fact or metric representing a list of dates for the payments or incomes
that are included. Ensure that these values use a date/time format.
Rate is the discount rate applied to the cash flows. This is commonly included in
the expression as a constant value.
Expression

Where:
n is the number of entries in payments.
di is the ith payment date and d1 is the first payment date.

Usage notes
The order of the entries in Payments is assumed to be the order in which funds
flow; payment and income entries must, therefore, be provided in the correct
sequence.

Example
You have an investment where payments are made at irregular intervals. This payment
and payment date information is included in MicroStrategy and displayed on the simple
report shown below:

2017, MicroStrategy Inc. 312


Functions Reference

Since the dates are not at regular intervals such as monthly or quarterly, you cannot use
the NPV function to determine the net present value. Instead, you can use the XNPV
function, which also evaluates the date of each payment to determine a net present
value. A new metric is added to the report, which uses the following definition that
includes a rate of 20%:
XNPV(Payment, Date, 0.2){}
The new report now includes this information, as shown below:

The net present value considering the payments, the dates of those payments, and a rate
of 20% is $20,379. Notice that while there is a single value for XNPV, it is displayed on
every row. One way to simplify the display of this information is to include this data on a
dashboard. You can include the XNPV result in a text field along with additional
visualizations of the data, as shown below.

313 2017, MicroStrategy Inc.


Functions Reference

Yield
Returns the yield on a security that pays periodic interest.
Syntax
Yield <Basis> (Settlement, Maturity, CouponRate, Price,
Redemption, Frequency)
Where:
Settlementis the settlement date. This is the date on which the security is
purchased.
Maturity is the maturity date. This is the date on which the security expires.
CouponRate is the annual interest rate.
Price is the price per $100 of face value.
Redemption is the redemption value per $100 of face value.
Frequency is the number of payments per year. The valid values are 1, 2, and 4
where annual payments =1, semiannual payments =2, and quarterly payments =4.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Other possible values for this parameter are
as follows.

Basis value Application


0 (30/360) Assumes 30 days in each month, 360 days in each year.
Assumes actual number of days in each month, actual number of days in each
1 (actual/actual)
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.

2017, MicroStrategy Inc. 314


Functions Reference

Basis value Application


3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
Used by European agencies, assumes the same values as 0 for American
4 (30/60)
institutions.

Expression
If there is one period (or less) untilRedemption, this function is calculated as follows.

Where:
A is the number of days from the beginning of the period to Settlement
DSR is the number of days from Settlement to Redemption
E is the number of days in a period
If there is more than one period until Redemption, this function is calculated
through iteration, and is based on the calculation for the PRICE function. See also
Appendix , Price (price per $100 face value).
Usage notes
If Settlement, Maturity, or Frequency is not an integer, it is truncated.
The engine returns an empty cell if:
Either Settlement or Maturity is not a valid date.
Price 0 or Redemption0.
Frequency is a number other than 1, 2, or 4.
Settlement > Maturity.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Yielddisc (yield on a discounted security)


Returns the annual yield on a discounted security.
Syntax
Yielddisc <Basis> (Settlement, Maturity, Price,
Redemption)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the maturity date. This is the date on which the security expires.
Price is the price per $100 of face value.

315 2017, MicroStrategy Inc.


Functions Reference

Redemption is the redemption value per $100 of face value.


Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

Basis value Application


0 (30/360) Assumes 30 days in each month, 360 days in each year.
Assumes actual number of days in each month, actual number of days in each
1 (actual/actual)
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
Used by European agencies, assumes the same values as 0 for American
4 (30/60)
institutions.

Usage notes
If Settlement or Maturity is not an integer, it is truncated.
The engine returns an empty cell if:
Either Settlement or Maturity is not a valid date.
Price0 or Redemption0.
Maturity Settlement.
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Yieldmat (yield at maturity)


Returns the annual yield on a security that pays interest at maturity.
Syntax
Yieldmat < Basis> (Settlement, Maturity, Issue, Rate,
Price)
Where:
Settlement is the settlement date. This is the date, after issue, on which the
security is traded.
Maturity is the date of maturity. This is the date on which the security expires.
Issue is the issue date.
Rate is the annual coupon rate.
Price is the price per $100 of face value.
Basis is a parameter that indicates the time-count basis to be used. The default
value for Basis is 0, which is typically used by American agencies and assumes 30-
day months and 360-day years (30/360). Possible values for this parameter are listed
in the following table.

2017, MicroStrategy Inc. 316


Functions Reference

Basis value Application


0 (30/360) Assumes 30 days in each month, 360 days in each year.
Assumes actual number of days in each month, actual number of days in each
1 (actual/actual)
year.
2 (actual/360) Assumes actual number of days in each month, 360 days in each year.
3 (actual/365) Assumes actual number of days in each month, 365 days in each year.
Used by European agencies, assumes the same values as 0 for American
4 (30/60)
institutions.

Usage notes
If Settlement, Maturity, or Issue is not an integer, it is truncated.
The engine returns an empty cell if:
Rate< 0
Price 0
Settlement Maturity
The Settlement date and the Maturity date should be included within single
quotations in the expression for the expression to be considered as a valid expression.

Mathematical functions
The category of Mathematical functions contains more complex math functions than the
simple operators found in the Basic functions. This category includes exponential,
logarithmic, and trigonometric functions. These functions are calculated by either the
MicroStrategy Analytical Engine or the database. Those not supported by the database
are automatically computed by the Analytical Engine.

Abs (absolute value)


Returns the absolute value of a given number. The absolute value of a number is the
number without a sign. This is a single-value function.
Syntax
Abs(Argument)
Where:
Argument is a metric representing a list of real numbers.
Example
This simple example show the results of executing the Abs function on a list of values.
Assuming you have a metric that represents deposit and withdrawal amounts, the
function operates as follows:
Abs(Deposit_Withdrawal) where Deposit_Withdrawal is the following list of
values: +756.25, -315, +145, -980.35, -75, +1250.78, +560. The resulting value list is

317 2017, MicroStrategy Inc.


Functions Reference

756.25, 315, 145, 980.35, 75, 1250.78, 560. For another example of using the Abs
function, see Example 1: Transformed fact, page 23.

Acos (arc cosine)


Returns the arc cosine of a given number as an angle. This angle is calculated in radians
and falls between 0 and . To convert radians to degrees, multiply by 180/. This is a
single-value function.
Syntax
Acos(Argument)
Where:
Argument is a metric representing a list of real numbers. The values are the values of
the cosine for the angles sought. This value must be between -1 and 1.

Acosh (arc cosine, hyperbolic)


Acosh returns the inverse hyperbolic cosine of a number. This function is the inverse of
Cosh. Acosh is a single-value function.
For more information on the hyperbolic cosine function, see Cosh (cosine, hyperbolic),
page 321.
Syntax
Acosh(Argument)
Where:
Argument is a metric representing a list of real numbers with values greater than or
equal to 1.

Asin (arc sine)


Returns the arc sine of a given number as an angle. This angle is calculated in radians
and falls between -/2 and /2. To convert radians to degrees, multiply by 180/. This is
a single-value function.
Syntax
Asin(Argument)
Where:
Argument is a metric representing a list of real numbers. The values are the values of
the sine of the angles sought. These values must be between -1 and 1.

Asinh (arc sine, hyperbolic)


Returns the inverse hyperbolic sine of a number. Asinh is the inverse of the Sinh
function. This is a single-value function.

2017, MicroStrategy Inc. 318


Functions Reference

For more information on the hyperbolic sine function, see Sinh (sine, hyperbolic), page
332.
Syntax
Asinh(Argument)
Where:
Argument is a metric representing a list of real numbers.

Atan (arc tangent)


Returns the arc tangent of a given number as an angle. This angle is specified in radians
and falls between /2 and-/2. To convert from radians to degrees, multiply by 180/.
Syntax
Atan(Number)
Where:
Number is the tangent of the angle you want.

Atan2 (arc tangent 2)


Returns the arc tangent of the specified x- and y-coordinates. The arc tangent is the
angle from the x-axis to a line containing the origin (0, 0) and a point with coordinates
(x_num, y_num). The angle is given in radians between - and . To convert the result
from radians to degrees, multiply by 180/. This is a single-value function.
Syntax
Atan2(x_num, y_num)
Where:
x_num is the x-coordinate of the point.
y_num is the y-coordinate of the point.

Atanh (arc tangent, hyperbolic)


Returns the inverse hyperbolic tangent of a given number. Atanh is the inverse of the
Tanh function. This is a single-value function.
For more information on the hyperbolic tangent function, see Tanh (tangent,
hyperbolic), page 333.
Syntax
Atanh(Number)
Where:
Number is any real number between 1 and -1.

319 2017, MicroStrategy Inc.


Functions Reference

Ceiling (ceiling value)


Returns the closest integer greater than or equal to a given number. Ceiling is often
used as a rounding function. This is a single-value function.
Syntax
Ceiling(Argument)
Where:
Argument is a metric representing a list of real numbers.
Example
Use ceiling calculations in situations where results are expressed as specified units of
measurement. For example, to avoid returns at the cent level, Ceiling could be used on
a product price to round up the figures to the nearest dollar.
This simple example illustrates how the Ceiling function acts on positive and negative
numbers, and how the results compare to the use of the Floor function.

Argument values Floor Ceiling

947.67 947.00 948.00


463.33 463.00 464.00
-947.67 -948.00 -947.00

-463.33 -464.00 -463.00

Combine (combination)
The number of possible combinations for a given number of items selected as a group
from a set.
Syntax
Combine(Number, Number_Chosen)
Where:
Numberis the number of items in a set.
Number_Chosen is the number of items to be included in each combination.
Expression
In the expression that follows, Number = n; Number_Chosen = k,

Where:

2017, MicroStrategy Inc. 320


Functions Reference

Usage notes
In combination calculations, the internal order of the items selected does not affect
the return. This differs from the case of a permutation, in which the order of the
items selected does affect the return. Permutation is a statistical function.
If an argument is not an integer, it is truncated.
This function returns an error value if:
Either argument is nonnumeric
n< 0
k<0
nk

Cos (cosine)
This function takes the value of an angle in radians and returns the cosine of the angle as
a number between -1 and 1.
In a given right triangle containing an angle A, there are three sides: the side opposite to
A, the side adjacent to A, and the side opposite to the right angle (hypotenuse). The
cosine of A is the ratio of the lengths of the adjacent side over the hypotenuse.
To convert degrees to radians, multiply by /180. This is a single-value function.
Syntax
Cos(Argument)
Where:
Argument is a metric representing a list of real numbers. The values are the angles, in
radians, for which the value of the cosine is sought. To convert the result from radians to
degrees, multiply by 180/.

Cosh (cosine, hyperbolic)


Returns the hyperbolic cosine of a number. This is a single-value function.
Syntax
Cosh(Argument)
Where:
Argument is a metric representing a list of real numbers. The values are the angles, in
radians, for which the value of the hyperbolic cosine is sought. To convert radians to
degrees, multiply by 180/.
Expression

321 2017, MicroStrategy Inc.


Functions Reference

Degrees (conversion to)


Returns the value of an angle converted from radians to degrees. This is a single-value
function.
Syntax
Degrees(Argument)
Where:
Argument is a metric representing a list of values to be converted from radians to
degrees.
Example
These simple examples illustrate how the Degrees function converts an angle entered in
radians into degrees.

Function/Result Calculation

Degrees(2.27) = 130

Degrees(/2) = 90

Exp (exponent)
Returns the value e raised to the power of the number given.e is a mathematical constant
equal to 2.71828182845904. Expis the inverse of Ln, the natural logarithm of a number.
This is a single-value function.
For more information on the natural logarithm function, see Ln (logarithm, natural),
page 325.
Syntax
Exp(Argument)
Where:
Argument is a metric representing a list of real numbers. The values are the power to
which e is raised
Example

2017, MicroStrategy Inc. 322


Functions Reference

This simple example illustrates the results of using the Exp function. The variable
e=2.71828182845904

Function/Result Calculation

Exp (2) = X = e2 ;
7.38905609893062
2.71828182845904 2.71828182845904 =
7.38905609893062

Factorial (factorial)
Returns the factorial of a positive integer. The factorial of an integer N is equal to the
product of all integers from 1 to N. For example, the factorial of 5 is 1 2 3 4 5, or
120.
This is a single-value function.
Syntax
Factorial(Argument)
Where:
Argument is a metric representing a list of positive integers.
Usage notes
If a number is not an integer or is negative, the function returns a NULL.
Example
These simple examples illustrate the results of using the Factorial function.

Function/Result Calculation

Factorial(5) = 120 543 2 1=120


Factorial(Argument) = 6, 5040, 1 2 3 = 6;
362880 where Argument
contains the values 3,7,9 1 2 3 4 5 6 7 = 5040;

123456789=
362880

Floor (floor value)


Returns the closest integer less than or equal to a given number. Floor is often used as a
rounding function. This is a single-value function.
Syntax

323 2017, MicroStrategy Inc.


Functions Reference

Floor(Argument)
Where:
Argument is a metric representing a list of real numbers.
Example
These simple examples illustrate how the Floor function acts on positive and negative
numbers, and how the results compare to the use of the Ceiling function.

Argument Values Floor Ceiling

947.67 947.00 948.00


463.33 463.00 464.00
-947.67 -948.00 -947.00

-463.33 -464.00 -463.00

Int (integer)
Returns the integer part of a number rounded down to the nearest integer. This is a
single-value function.
Syntax
Int(Argument)
Where:
Argument is a metric representing a list of real numbers.
Usage notes
The expression [Argument - INT(Argument)] can be used to return the
decimal part of a non-integer.
Results from Int and Trunc differ only when the values are less than 0.
Example
These simple examples illustrate how the Int function acts on positive and negative
numbers, and how the results differ from the Trunc function when the numbers are
negative.

Argument Values Int Trunc

947.67 947.00 947.00


463.33 463.00 463.00
-947.67 -948.00 -947.00
-463.33 -464.00 -463.00

2017, MicroStrategy Inc. 324


Functions Reference

Ln (logarithm, natural)
Returns the natural logarithm of a given number.This is a single-value function. Ln is the
inverse of the Exp function.
For more information on the Exponent function, see Exp (exponent), page 322.
Syntax
Ln(Argument)
Where:
Argument is a metric representing a list of positive real numbers.
Example
This simple example illustrates the results of the Ln function. The variable
e=2.71828182845904.

Function/Result Calculation

Ln (20) = 20 = ex where x is the natural logarithm;


2.99573227355399
20 = e2.99573227355399

Log (logarithm)
Returns the logarithm of a given number in a specified base. This is a single-value
function.
Syntax
Log(Argument, Base)
Where:
Argument is a metric representing a list of positive real numbers.
Base is the base of the logarithm.
Example
This simple example illustrates the results of the Log function.

Function/Result Calculation

Log(9, 3) = 2 9 = 3x where x is the base-3 logarithm; 9 = 32

Log(4, 4) = 1 4 = 4x where x is the base-4 logarithm; 4 = 41

Log (7776, 6) = 5 7776 = 6x where x is the base-6 logarithm; 7776 =


65

325 2017, MicroStrategy Inc.


Functions Reference

Log10 (logarithm, base 10)


Returns the base-10 logarithm of a given number. This is a single-value function.
Syntax
Log10(Argument)
Where:
Argument is a metric representing a list of positive real numbers.
Example
This simple example illustrates the results of the Log10 function.

Function/Result Calculation

Log10(10000) = 4 10000 = 10x where x is the base-10 logarithm;


10000 = 104

Mod (modulus)
Returns the remainder of a number when divided by a another number. The result has
the same sign as the dividend. This is a single-value function.
Syntax
Mod (Argument, Divisor)
Where:
Argument is a metric representing a list of real numbers.
Divisor is the number used to divide the value(s) of Argument.
Usage notes
The function returns a NULL if Divisor = 0.
Use the Quotient function to return only the integral part of the result.
Example
These simple examples illustrate the results of using the Mod function.

Function/Result Calculation

Mod(5, 2) = 1 5/2 = 2 remainder 1


Mod(5, -2) = 1 5/-2 = 2 remainder 1 and takes the sign of the
dividend

2017, MicroStrategy Inc. 326


Functions Reference

Function/Result Calculation

Mod(-5, 2) = -1 -5/2 = 2 remainder 1 and takes the sign of the


dividend
Mod(140, 2) = 0 140/2 = 70 remainder 0
Mod(83, 9) = 2 83/9 = 9 remainder 2
Mod(-5, -2) = -1 -5/-2 = 2 remainder 1 and takes the sign of the
dividend

Power
Returns the value of an input number raised to a given power. This is a single-value
function.
Syntax
Power(Argument, Power)
Where:
Argument is a metric representing a list of base numbers. All real numbers are valid.
Power is the exponent to which Argument is raised.
Usage notes
If Argument is a negative number and Power is an even number, the result is positive;
however, if Argument is negative and Power is an odd number, the result is negative.
Example
These simple examples illustrate the results of using the Power function.

Function/Result Calculation

Power(5, 2) = 25 5 5 = 25

Power(-5, 2) = 25 -5 -5 = 25

Power(-5, 3) = -125 -5 -5 -5 = -125

Power(4, 3) = 64 4 4 4 = 64

Power(20,4) = 20 20 20 20 = 160000
160000

327 2017, MicroStrategy Inc.


Functions Reference

Quotient
Returns the integer result of dividing two numbers. This function discards the
remainder. This is a single-value function.
Syntax
Quotient(numerator, denominator)
Where:
Numerator is a metric representing a list of real numbers to be used as the
dividend.
Denominatoris a metric representing a list of real numbers to be used as the
divisor.
Usage notes
Use the Mod function (Mod (modulus), page 326) to retrieve only the remainder.
Example
These simple examples illustrate the results of using the Quotient function.

Function/Result Calculation

Quotient(5, 2) = 2 5/2 = 2 remainder 1


Quotient(83, 9) = 9 83/9 = 9 remainder 2

Radians (conversion to)


Returns the value of an angle converted from degrees to radians. This is a single-value
function.
Syntax
Radians(Argument)
Where:
Argument is a metric representing a list of values to convert from degrees to radians.
Example
This simple example illustrates how the Radians function converts an angle entered in
degrees into radians.

Function/Result Calculation

Radians(130) = 2.27

2017, MicroStrategy Inc. 328


Functions Reference

Randbetween (random number between two values)


Returns a random number that falls between two specified values. The value returned is a
real number, as opposed to an integer value.
A different number is returned each time the function is run. However, if the
Randbetween function is used to modify multiple rows of values on a report, be aware
that if you use a simple definition such as Randbetween(2, 10) the same random number
will be applied to each row of data on the report. You can apply a different random
number to each row of data in a report by including metric values in the Randbetween
calculation, and an example of this is provided below.
Syntax
Randbetween(Bottom, Top)
Where:
Bottom is a real number or metric representing a list of real numbers that are the
lowest value(s) the function can return; the bottom of the range. You can also
include expressions that result in a real number value.
Top is a real number or metric representing a list of real numbers which are the
highest value(s) the function can return; the top of the range. You can also include
expressions that result in a real number value.
While Randbetween can accept real values as input values for Bottom and Top, the
input values are processed differently based on the following:
Processed by the Analytical Engine: Functions provided with MicroStrategy can be
evaluated by the MicroStrategy Analytical Engine in cases where functions cannot be
evaluated by a database, or when features such as derived metrics use a function as
part of their definition. When Randbetween is processed by the Analytical Engine,
both input values are rounded down to the nearest integer value before determining
a random number. For example, the expression Randbetween(0.5,1.6) for a
derived metric will first round both input values down, making the resulting
expression Randbetween(0,1). A random, real number is then returned between
the values of 0 and 1.
You can determine if a metric is processed by the Analytical Engine by looking at the
SQL view of a report.
Processed by a database: Functions provided with MicroStrategy can be passed to the
database for processing when the database supports that function. See Appendix A,
MicroStrategy and Database Support for Functions for a list of the databases and
the functions they support.
When Randbetween is processed by a database, the real values can be used directly
as input values without any rounding. For example, the expression Randbetween
(0.5,1.6) for a metric will return a random, real number between the values of
0.5 and 1.6.
Example

329 2017, MicroStrategy Inc.


Functions Reference

Random numbers are used often in statistical analysis. A common practice is to apply a
random percentage to another value. To do this, you can use the Randbetween function
to return a number between 0 and 1. This can be achieved with the following syntax:
Randbetween(0, 1)
This returns a real number value between zero and one. This can be used in an
expression to multiply against another value, which would return a random percentage of
that value. For example, you can return a random percentage of revenue by creating a
metric with the following definition:
(Sum(Revenue) {~+} * Randbetween(0, 1))
When using a metric with this definition on a report the same random percentage is
applied to all revenue values on a report.
In the definition provided below, the metric Revenue is used in the Randbetween
calculation. By including the revenue data as part of the calculation of Randbetween, a
different random number is generated for each row of revenue data on a report.
Randbetween(0, Revenue)
These two metrics are created as Random Revenue 1 and Random Revenue 2
respectively, and displayed on the same report shown below:

Notice that the metric Random Revenue 2, which includes the revenue data as part of
the Randbetween calculation, is using a different percentage for each row of revenue
data. However, the metric Random Revenue 1 which uses a simple definition of the
Randbetween calculation as Randbetween(0,1) uses the same random percentage to
modify all rows of Revenue data.

Round (round to nearest integer)


Returns the input values rounded to the nearest integer. This is a single-value function.
Syntax
Round(Argument)
Where:
Argument is a metric representing a list of real numbers.
Example
These simple examples illustrate the result of using the Round function, and compare
them to the Int function results for the same values.

2017, MicroStrategy Inc. 330


Functions Reference

Argument Values Round Int

947.67 948.00 947.00


463.33 463.00 463.00
-947.67 -948.00 -948.00
-463.33 -463.00 -464.00

Round2 (round to specified precision)


Returns the input values rounded to a specified number of digits. This is a single-value
function.
Syntax
Round2(Argument, Precision)
Where:
Argument is a metric representing a list of real numbers
Precision is an integer value specifying the placement of the digits to which the
Argument value(s) are rounded.
If Precision = 0, then the values are rounded to the nearest integer. This has
the same results as using the Round function.
If Precision is greater than 0, then the values are rounded to the decimal
place indicated.
If Precision is less than 0, then the values are rounded to the specified digits
to the left of the decimal and starting to the left of the integer in the ones place.
Example
This simple example illustrates how the Precision value affects the results of the Round2
function.

Argument values Round2(argument, 0) Round2(argument, 1) Round2(argument, -1)

947.67 948.00 947.70 950.00


811.00 811.00 811.00 810.00
463.33 463.00 463.30 460.00

Sin (sine)
This function takes the value of an angle in radians and returns the sine of the angle as a
number between -1 and 1.

331 2017, MicroStrategy Inc.


Functions Reference

In a given right triangle containing an angle A, there are three sides: the side opposite to
A, the side adjacent to A, and the side opposite to the right angle (hypotenuse). The sine
of A is the ratio of the lengths of the opposite side over the hypotenuse.
To convert degrees to radians, multiply by /180. This is a single-value function.
Syntax
Sin(Argument)
Where:
Argument is a metric representing a list of values. The values are angles, in radians, for
which the sine is sought. Multiplying the argument by /180 converts an angle from
degrees to radians.

Sinh (sine, hyperbolic)


Returns the hyperbolic sine of a given angle. The value of the hyperbolic sine is used to
approximate a cumulative probability distribution. This is a single-value function.
Syntax
Sinh(Argument)
Where:
Argument is a metric representing a list of values. The values are angles, in radians, for
which the hyperbolic sine is sought. Multiplying the argument by /180 converts an
angle from degrees to radians.
Expression

Sqrt (square root)


Returns the square root of a given positive number. This is a single-value function.
Syntax
Sqrt(Argument)
Where:
Argument is a metric representing a list of positive real numbers.
Usage notes
A NULL is returned if an argument value is less than 0.
Example
This simple example illustrates the results of using the Sqrt function.

2017, MicroStrategy Inc. 332


Functions Reference

Sqrt(25) = 5
Sqrt(169) = 13

Tan (tangent)
This function takes the value of an angle in radians and returns the tangent of the angle.
In a given right triangle containing an angle A, there are three sides: the side opposite to
A, the side adjacent to A, and the side opposite to the right angle (hypotenuse). The
tangent of A is the ratio of the lengths of the opposite side over the adjacent side.
To convert degrees to radians, multiply by /180. This is a single-value function.
Syntax
Tan(Argument)
Where:
Argument is a metric representing a list of real numbers.

Tanh (tangent, hyperbolic)


Returns the value of the hyperbolic tangent of a given number. This is a single-value
function.
Syntax
Tanh(Argument)
Where:
Argument is a metric representing a list of real numbers.
Expression

Trunc (truncate)
Returns the integer component of a given number. The function removes the fractional
part of a real number so that only the integer part remains. The fractional part is
removed without rounding the number up or down. This is a single-value function.
Syntax
Trunc(Argument)
Where:
Argument is a metric representing a list of real numbers.
Usage notes
Results from Trunc and Int differ only when the values are less than 0.

333 2017, MicroStrategy Inc.


Functions Reference

Example
This simple example illustrates how the Trunc function acts on positive and negative
numbers, and how it differs from the Int function.

Argument Values Int Trunc

947.67 947.00 947.00


463.33 463.00 463.00
-947.67 -948.00 -947.00
-463.33 -464.00 -463.00

Statistical functions
The statistical functions include a wide range of functions designed to provide you with
the tools to perform statistical analysis on your data.

AvgDev (average deviation)


Returns the average of the absolute deviations of a set of data points from the mean.
Similar to standard deviation, average deviation is a measure of the variability in a data
set.
Syntax
AvgDev <FactID> (Argument)
Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Argument is a fact or metric representing a list of numbers.
Expression

In this expression, x is a value in a fact table.


Where:
is the average of all xi

2017, MicroStrategy Inc. 334


Functions Reference

BetaDistribution
Returns the cumulative Beta distribution of the variables alpha and beta, where the
probability density function is given by

Where:

This function is used to study percentage variations for an item across population
samples (for example, how much of a day people spend watching television).
Syntax
BetaDistribution < Lower Bound, Upper Bound > (x, alpha,
beta)
Where:
x is the value between Lower Bound (a) and Upper Bound (b) at which the
function is evaluated.
alpha and beta are distribution parameters.
alpha =
beta =
Lower Bound is an optional lower bound of the interval of x.
Upper Bound is an optional upper bound of the interval of x.
Usage notes
The following are invalid conditions:
x, alpha, or beta is nonnumeric.
alpha 0 or beta 0.
x < Lower Bound or x > Upper Bound.
Lower Bound = Upper Bound.

335 2017, MicroStrategy Inc.


Functions Reference

BinomialDistribution
Returns either the binomial probability or the cumulative binomial probability of
variables n and p. This function is used in cases in which:
There is a fixed number of tests
Each test can only result in either success or failure (binary)
Tests are independent of all other tests
The probability of success is constant, for example, to calculate the probability that
two out of the next three babies will be male
Syntax
BinomialDistribution <Cumulative> (x, n, p)
Where:
x is the number of successes.
n is the number of tests.
p is the number indicating the probability of a success in each trial.
Cumulative is a logical value that determines the form of the function.
If Cumulative=0, it computes the Cumulative Binomial probability.
If Cumulative=1, it computes the Binomial probability.
Expression

For the binomial probability:


Where:
is Combine(n, x).

The cumulative binomial distribution is:

Usage notes
If x or n is not an integer, it is truncated.

2017, MicroStrategy Inc. 336


Functions Reference

The following are invalid conditions:


One of the arguments is nonnumeric.
x>n
x< 0
p < 0 or p > 1

ChiSquareDistribution
Returns the right-tailed chi-squared distribution of the degrees of freedom, where the
probability density function is given by

Where:
is the degree of freedom
is the gamma function
The chi-squared distribution is associated with a chi-squared test. A chi-squared test is
used to compare observed values against expected ones. It determines the validity of a
hypothesis, such as the prediction that the next generation of a certain plant hybrid will
exhibit a specific combination of colors.
Syntax
ChiSquareDistribution(x, df)
Where:
x is a non-negative decimal value at which the distribution is evaluated.
df is an integer greater than or equal to one (>=1) indicating the number of degrees
of freedom for the distribution.
Usage notes
If df is not an integer, it is truncated
The following are invalid conditions:
Either argument is nonnumeric
x < 0
df < 1

337 2017, MicroStrategy Inc.


Functions Reference

ChiSquareTest (chi-square test for goodness of fit)

Confidence (confidence interval)


Returns the confidence interval for a population mean.The confidence interval is a range
of values on either side of a mean. For example, if you order a product through the mail,
you can determine, within a given level of confidence, the earliest and latest date of
expected arrival.
Syntax
Confidence(Alpha, Stdev, Size)
Where:
Alpha is the level of significance at which confidence is computed.
Stdev is the standard deviation of the population for the given data range.
Size is a positive integer indicating the size of the sample.
Expression
The confidence level is expressed as [100(1-alpha)%]. If alpha = 0.05, then:
Confidence = 95%
The area equivalent to 95% of the population = 1.96
The confidence interval is

Usage notes
Ifsize is not an integer, it is truncated.
The following are invalid conditions:
One of the arguments is nonnumeric.
alpha < 0 or alpha > 1
stdev < 0

2017, MicroStrategy Inc. 338


Functions Reference

size < 1
Example
For an example of the Confidence function, see Confidence level example, page 77.

Correlation
A correlation of two values describes the degree to which the values are related or
associated. Values that are closely related with either a positive or negative correlation
will have a correlation close to 1 or -1 respectively, while values that are not correlated at
all will have a correlation close to 0.
To determine the correlation of two values while applying a weight to the comparisons,
see WeightedCorr (weighted correlation), page 197.

This function is the same as Pearson (Pearson product moment correlation


coefficient), page 363.

Syntax
Correlation <FactID> (Argument1, Argument2)
Where:
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Argument1 and Argument2 are lists of values represented by facts or metrics.
Usage notes
The correlation coefficient is measured on a scale that varies from + 1 through 0 to -
1. So only a value between -1 and 1 is returned.
Complete correlation between two variables is expressed by either + 1 or -1. When
one variable increases as the other increases, the correlation is positive; when one
decreases as the other increases, the correlation is negative. Complete absence of
correlation is represented by 0.
If an array or reference argument contains text, logical values, or empty cells, those
values are ignored; however, cells with the value zero are included.
If Argument1 and Argument2 have a different number of data points, Correlation
returns an error.
If either Argument1 or Argument2 is empty, or if the standard deviation of their
values equals zero, Correlation returns an error.

Covariance
Covariance is used to examine the relationship between two data sets. For instance,
the covariance could be used to examine whether an increase in income is related to
higher education levels. A covariance greater or less than zero indicate a relationship,
while a value of zero indicates no relationship.

339 2017, MicroStrategy Inc.


Functions Reference

To determine the covariance of two values while applying a weight to the comparisons,
see WeightedCov (weighted covariance), page 199.

Covariance is similar to Correlation and Pearson, which also describe the


relationship between two data sets. While Covariance describes the
relationships with positive or negative values, Correlation and Pearson
normalize these positive or negative values to a range between -1 and 1.

Syntax
Covariance <FactID> (Argument1, Argument2)
Where:
Argument1 and Argument2 are facts or metrics representing lists of values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression
In the expression that follows:
Argument1 = X
Argument2= Y

Where:
= average value of x

= average value of y

Usage notes
The following are invalid conditions:
Argument1 and Argument2 do not contain the same number of data points.
Either value set is empty.

CritBinomial (criterion binomial)


Returns the smallest value for which the cumulative binomial distribution is greater than
or equal to a criterion value. Use this function for quality control, for example, to
determine the maximum number of defective items that can come off an assembly line
run before rejecting an entire lot.
Syntax

2017, MicroStrategy Inc. 340


Functions Reference

CritBinomial(Trials, Probability_s, Alpha)


Where:
Trials is the number of Bernoulli trials.
Probability_s is the probability of a success on each trial.
Alpha is the criterion value.
Usage notes
The following are invalid conditions:
Where:
Any argument is nonnumeric.
Trials is not an integer.
Trials < 0.
Probability_s is < 0 or probability_s > 1.
alpha < 0 or alpha > 1.

ExponentialDistribution
Returns either the probability density or the cumulative distribution of a random
variable. This function is used to model the time between events. For example, it can be
used to estimate the probability that an automatic-teller machine will take no more than
one minute to deliver requested cash.
Syntax
ExponentialDistribution <Cumulative> (x, lambda)
Where:
Cumulative is a logical value that determines the form of the function:
If Cumulative=0 (default), it returns the cumulative distribution.
If Cumulative=1, it returns the probability density.
x is the value of the function.
lambda is the value of the parameter.
Expression
For probability density:

For cumulative distribution:

341 2017, MicroStrategy Inc.


Functions Reference

Usage notes
The following are invalid conditions:
Either x or lambda is nonnumeric.
x<0.
lambda 0.

Fisher (fisher transformation)


Returns the Fisher transformation at x. The Fisher transformation yields a normally-
distributed function, as opposed to a skewed one. It is used to perform hypothesis-testing
on the correlation coefficient.
Syntax
Fisher (x)
Where:
x is the number for which the transformation is sought.
Expression

Usage notes
The following are invalid conditions:
x is nonnumeric.
x -1 or x 1.

FDistribution (f-probability distribution)


Returns the right-tailed distribution (F-probability) of a random variable.This function is
used to determine the difference, in degrees of diversity, between two data sets. For
example, test scores administered to males and females entering high school can be
examined using this function to determine whether the variability in females is different
from that found in males.
Syntax
FDistribution(x, df1, df2)

Where:
x is the value at which the function is evaluated.

2017, MicroStrategy Inc. 342


Functions Reference

df1 represents the degrees of freedom of numerator values.

df2 represents the degrees of freedom of denominator values.

Expression

Where:
Fis a random variable that has an F distribution.
Usage notes
If df1 or df2 is not an integer, it is truncated.

The following are invalid conditions:


An argument is non-numeric.
x<0.
df1< 1

df2 < 1

Forecast
The Forecast function uses data recorded for certain time periods to calculate and
display the expected value of data for an unknown time period. This is most commonly
used to predict future metric values based on historical data. For example, based on
revenue data for three years, you want to predict what your Revenue will be for the
coming year.
This function uses a linear equation to predict future values. Therefore, it is best suited to
predict values that increase or decrease in a linear trend. For example, if your profits are
increasing by $10,000 each year, this is a scenario that is well suited for a prediction
based on a linear equation.
For a function that predicts values in a similar way for data that is increasing or
decreasing exponentially, see Growth, page 348.
Syntax
Forecast <FactID>(FutureTime, KnownData1,...,KnownDataN,
KnownTimeIntervals1,...,KnownTimeIntervalN)
Where:
FutureTime is the point in time for which to predict the data. This is commonly
defined as an integer. For example, to predict values for the year 2009, you would
enter the value 2009 for FutureTime (this assumes your year data is defined with
IDs that match the year).
KnownData1,...,KnownDataN are separate scalar values that provide the data to
use to predict a future value for. While you can use Forecast to enter these values

343 2017, MicroStrategy Inc.


Functions Reference

manually, it is more common to use ForecastV which can use a metric to enter a
list of values, as described in ForecastV (forecast, vector input), page 344.
KnownTimeIntervals1,...,KnownTimeIntervalN are separate scalar values
that provide the time intervals for which data is known. While you can use
Forecast to enter these values manually, it is more common to use ForecastV
which can use an attribute to enter a list of time intervals, as described in ForecastV
(forecast, vector input), page 344.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Example
As described in the syntax requirements, you can use Forecast to enter values and time
intervals manually. However, it is more common to use ForecastV to use metrics and
attributes to enter this information, as described in ForecastV (forecast, vector input),
page 344.

ForecastV (forecast, vector input)


The ForecastV function uses data recorded for certain time periods to calculate and
display the expected value of data for an unknown time period. This is most commonly
used to predict future metric values based on historical data. For example, based on
revenue data for three years, you can predict what your Revenue will be for the coming
year.

You can use ForecastV to predict values for any point in time, including dates
that have known data. However, this type of function is meant for predicting
future, unknown values.

This function uses a linear equation to predict future values. Therefore, it is best suited to
predict values that are increasing or decreasing in a linear trend. For example, if your
profits are increasing by $10,000 each year, this is a scenario that is well suited for a
prediction based on a linear equation.
For a function that predicts values in a similar way for data that is increasing or
decreasing exponentially, see GrowthV (growth, vector input), page 348.
Syntax
ForecastV <FactID>(FutureTime, KnownData,
KnownTimeIntervals)
Where:
FutureTime is the point in time for which to predict the data. This is commonly
defined as an integer. For example, to predict values for the year 2009, you would
enter the value 2009 for FutureTime (this assumes your year data is defined with
IDs that match the year).
KnownData is an object representing a list of values. This list of values is the known
data to use to predict a future value for. KnownData is commonly used for metrics
that represent data such as revenue, profit, and so on.

2017, MicroStrategy Inc. 344


Functions Reference

KnownTimeIntervals is an object representing a list of values. This list of values


provide the time intervals for which data is known. KnownTimeIntervals is
commonly used for attributes that represent intervals of time such as year, quarter,
month, and so on.
Since this function allows you to enter a list of time intervals, it can account for
missing time intervals more accurately than the TrendV function (see TrendV
(trend, vector input), page 370). For an example, see the examples described below.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Example
The ForecastV function is useful to display predicted future values of a metric as a
subtotal of the metric on a report.
For example, in the MicroStrategy Tutorial project a new subtotal named 2008 Forecast
can be created with the following definition:
ForecastV(2008, x, Year)
Since this is in a subtotal, the x is a placeholder for a metric. When a subtotal is applied
to a metric on a report, the placeholder inputs that metrics values.
Also, 2008 is used for the period in time to predict metric data for because the Year
attribute uses ID values that match the year.
After making the new custom subtotal available for the Revenue metric (see the
Advanced Reporting Guide for steps to make custom subtotals available for metrics) a
report with the attribute Year and the metric Revenue is created. When the 2008
Forecast is displayed on the report, it displays the predicted value for 2008 Revenue, as
shown below:

Since the ForecastV function allows you to enter a list of time intervals, it can account
for time intervals that you have no data for. For example, consider the same report in a
scenario in which there was no data available for the year 2006. The ForecastV
function can still use the two available years to predict the revenue for 2008.

345 2017, MicroStrategy Inc.


Functions Reference

FTest
Returns the P-value of an F-test on the variances of two sets of data. It tests that the
variances in the two sets are not significantly different. For example, given the test scores
from public and private schools, this function enables you to determine whether diversity
levels between the two school types are significantly different.Decision Reality: H0 is
correctReality: H1 is correctAccept H0No problemType 1 errorReject H0Type 2 errorNo
problemDefinitionP-value = Pr[Reject H0| H0 is correct]P-value is basically a probability
of making a Type 2 error.FTest returns the p-value for the hypothesis test in the
following form:H0: (Argument1) / (Argument2) = RatioH1: (Argument1) /
(Argument2) < Ratio (Type = -1) (Argument1) / (Argument2) Ratio (Type
= 0: two-sided test) (Argument1) / (Argument2) > Ratio (Type = 1)
(Argument1) / (Argument2) Ratio (Type = 2: one-sided test)SyntaxFTest
<Hypothesis type, Ratio> (Argument1, Argument2)Usage notesThe
following are invalid conditions:Argument1 and Argument2 contain a different
number of data points.The variance of either data set is zero.
Definition
P-value = Pr[Reject H0| H0 is correct]

P-value is basically a probability of making a Type 2 error.

FTest returns the p-value for the hypothesis test in the following form:
H0:

(Argument1) / (Argument2) = Ratio

H1:

(Argument1) / (Argument2) < Ratio (Type = -1)

(Argument1) / (Argument2) Ratio (Type = 0: two-sided test)

(Argument1) / (Argument2) > Ratio (Type = 1)

(Argument1) / (Argument2) Ratio (Type = 2: one-sided test)

Syntax
FTest <Hypothesis type, Ratio> (Argument1, Argument2)
Usage notes
The following are invalid conditions:
Argument1 and Argument2 contain a different number of data points.

2017, MicroStrategy Inc. 346


Functions Reference

The variance of either data set is zero.

GammaDistribution
Returns either the cumulative Gamma distribution or the probability density of a random
variable. This function is used in queueing analysis to study variables that may have a
skewed distribution.
Syntax
GammaDistribution <Cumulative> (x, Alpha, Beta)
Where:
x is the value at which you want to evaluate the distribution.
Alpha is a distribution parameter.
Beta is a distribution parameter.
Cumulative is a logical value that determines the form of the function:
If Cumulative=0 (default), it returns the cumulative distribution.
If Cumulative=1, it returns the probability density.
Expression

The expression for the standard gamma distribution is:

If alpha = 1, this function returns the exponential distribution as:

Usage notes
When alpha > 0, this function is also known as the Erlang distribution.
The following are invalid conditions:
Either alpha or beta is nonnumeric.
Either alpha 0 or beta 0.
x < 0.

347 2017, MicroStrategy Inc.


Functions Reference

Growth
The Growth function uses data recorded for certain time intervals to calculate and
display the expected value of data for an unknown time period. This is most commonly
used to predict future metric values based on historical data. For example, based on
revenue data for three years, you can predict what your Revenue will be for the coming
year.
This function uses an exponential equation to predict future values. Therefore, it is best
suited to predict values that increase or decrease in an exponential trend. For example, if
your profits are increasing by 4 percent each year, this is a scenario that is well suited for
a prediction based on an exponential equation.
For a function that predicts values in a similar way for data that is increasing or
decreasing with a linear trend, see Forecast, page 343 or Trend, page 369.
Syntax
Growth <FactID>
(KnownData1,...,KnownDataN, FutureTimeOffset)
Where:
KnownData1,...,KnownDataN are separate scalar values that provide the data to
use to predict a future value for. While you can use Growth to enter these values
manually, it is more common to use GrowthV which can use a metric to enter a list
of values, as described in GrowthV (growth, vector input), page 348.
FutureTimeOffset is the point in time after the final time interval available for
which to predict the data. This is commonly defined as an integer. For example, to
predict values for the year 2009 when the last available data you have is for 2007,
you would enter the value of 2 for FutureTimeOffset.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Example
As described in the syntax requirements, you can use Growth to enter values manually.
However, it is more common to use GrowthV to use metrics and attributes to enter this
information, as described in GrowthV (growth, vector input), page 348.

GrowthV (growth, vector input)


The GrowthV function uses data recorded for certain time intervals to calculate and
display the expected value of data for an unknown time period. This is most commonly
used to predict future metric values based on historical data. For example, based on
revenue data for three years, you want to predict what your Revenue will be for the
coming year.

You can use GrowthV to predict values for any point in time, including dates that
have known data. However, this type of function is meant for predicting future,
unknown values.

2017, MicroStrategy Inc. 348


Functions Reference

This function uses an exponential equation to predict future values. Therefore, it is best
suited to predict values that increase or decrease in an exponential trend. For example, if
your profits are increasing by 15 percent each year, this is a scenario that is well suited
for a prediction based on a linear equation.
For a function that predicts values in a similar way for data that is increasing or
decreasing with a linear trend, see ForecastV (forecast, vector input), page 344 or
TrendV (trend, vector input), page 370.
Syntax
GrowthV <FactID, SortBy>(KnownData, FutureTimeOffset)
Where:
KnownData is an object representing a list of values. This list of values is the known
data to use to predict a future value for. KnownData is commonly used for metrics
that represent data such as revenue, profit, and so on.
FutureTimeOffset is the point in time after the final time interval available for
which to predict the data. This is commonly defined as an integer. For example, to
predict values for the year 2009 when the last available data you have is for 2007,
you would enter the value of 2 for FutureTimeOffset.
The GrowthV function assumes that data is available for sequential time intervals
with no missing data. If your data meets these requirements, this allows you to use a
single expression to use on reports with varying time intervals such as year, month,
quarter, and so on. For an example, see the examples described below.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
SortBy is a parameter that defines the order of calculation. For more information,
see BreakBy and SortBy parameters, page 33.
Example
The GrowthV function is useful to display predicted future values of a metric as a
subtotal of the metric on a report.
For example, in the MicroStrategy Tutorial project a new subtotal named 2008 Growth
can be created with the following definition:
GrowthV(x, 1)
Since this is in a subtotal, the x is a placeholder for a metric. When a subtotal is applied
to a metric on a report, the placeholder inputs that metrics values.
Also, 1 is used as the offset in the time interval to predict data for the first time interval
that is not known.
After making the new custom subtotal available for the Revenue metric (see the
Advanced Reporting Guide for steps to make custom subtotals available for metrics) a
report with the attribute Year and the metric Revenue is created. When the 2008
Growth is displayed on the report, it displays the predicted value for 2008 Revenue, as
shown below:

349 2017, MicroStrategy Inc.


Functions Reference

This predicted value is different than the values predicted by the functions ForecastV
and TrendV, as described in ForecastV (forecast, vector input), page 344 and TrendV
(trend, vector input), page 370. This difference is due to GrowthV predicting values
based on an exponential trend, and as such should be used with data that reflects such a
trend.

HeteroscedasticTTest and HomoscedasticTTest


Return the P-value for the hypothesis test. These two functions are used to determine
the level of variance between the means of paired samples, assuming both samples have
different arguments. For example, they may be used when a given group is to be tested
before and after an experiment.Decision Reality: H0 is correctReality: H1 is
correctAccept H0No problemType 1 errorReject H0Type 2 errorNo
problemDefinitionP-value = Pr[Reject H0| H0 is correct]P-value is a probability of
making a Type 2 error.HeteroscedasticTTest or HomoscedasticTTest returns the p-value
for the hypothesis test in the following form:For H0: (Argument1) - (Argument2) =
offsetFor H1:(Argument1) - (Argument2) < offset (Type = -1)(Argument1) - (Argument2)
offset (Type = 0: two-sided test)(Argument1) - (Argument2) > offset (Type = 1)
(Argument1) - (Argument2) offset (Type = 2: one-sided
test)SyntaxHeteroscedasticTTest or HomoscedasticTTest <Hypothesis
type, offset> (Argument1, Argument2)Usage notesHeteroscedastic t-tests
are based on the assumption that variances between two sample data ranges are unequal
[ (Argument1) (Argument2)].Homoscedastic t-tests are based on the
assumption that variances between two sample data ranges are equal [ (Argument1) =
(Argument2)].The following are invalid conditions:Argument1 and Argument2 have
a different number of data points, and Hypothesis type = 1 (paired).Offset or Hypothesis
type is nonnumeric.ExampleFor an example using both Heteroscedastic T-test and
Homoscedastic T-test, see Hypothesis Testing example, page 72.
Definition
P-value = Pr[Reject H0| H0 is correct]

P-value is a probability of making a Type 2 error.

HeteroscedasticTTest or HomoscedasticTTest returns the p-value for the hypothesis test


in the following form:
For H0:

(Argument1) - (Argument2) = offset


For H1:

2017, MicroStrategy Inc. 350


Functions Reference

(Argument1) - (Argument2) < offset (Type = -1)


(Argument1) - (Argument2) offset (Type = 0: two-sided test)
(Argument1) - (Argument2) > offset (Type = 1)
(Argument1) - (Argument2) offset (Type = 2: one-sided test)
Syntax
HeteroscedasticTTest or HomoscedasticTTest <Hypothesis
type, offset> (Argument1, Argument2)
Usage notes
Heteroscedastic t-tests are based on the assumption that variances between two
sample data ranges are unequal [ (Argument1) (Argument2)].

Homoscedastic t-tests are based on the assumption that variances between two
sample data ranges are equal [ (Argument1) = (Argument2)].

The following are invalid conditions:


Argument1 and Argument2 have a different number of data points, and
Hypothesis type = 1 (paired).
Offset or Hypothesis type is nonnumeric.
Example
For an example using both Heteroscedastic T-test and Homoscedastic T-test, see
Hypothesis Testing example, page 72.

HypergeometricDistribution
Returns the probability of a given number of sample successes, given the sample size,
population successes, and population size. Use this function for problems with a finite
population, where each observation is either a success or a failure, and where each subset
of a given size is chosen with equal likelihood.
Syntax
HypergeometricDistribution(x, n, M, N)
Where:
x is the number of successes in the sample.
n is the size of the sample.
M is the number of successes in the population.
N is the population size.
Expression

351 2017, MicroStrategy Inc.


Functions Reference

Usage notes
All arguments are truncated to integers.
The following are invalid conditions:
Any argument is nonnumeric.
x < 0 or x is greater than the lesser of n or M.
x is less than the larger of 0 or (n - N + M).
n < 0 or n > N.
M < 0 or M > N.
N < 0.

Intercept
Returns the point at which a line intersects the y-axis in a graph. This function is used to
determine the value of a dependent variable Y when the value of its associated
independent variable X is 0. The point of intersection is based on a best-fit regression
line plotted through available values of X and Y.
Syntax
Intercept <FactID> (Argument1, Argument2)
Where:
Argument1 is the dependent set of observation data represented by a fact or metric.
Argument2 is the independent set of observation data represented by a fact or
metric.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression
In the expressions that follow, Argument1 = Y, Argument2 = X.
The equation for the intercept of the regression line is

The slope of the regression line is calculated as:

2017, MicroStrategy Inc. 352


Functions Reference

Usage notes
This function results in an invalid value if Argument1 and Argument2 contain a different
number of data points.
Example
For an example using the Intercept function, see Hypothesis Testing example, page 72.

InverseBetaDistribution (inverse of the beta


distribution)
Returns the inverse of the cumulative Beta distribution.
For information on the Beta distribution function, see BetaDistribution, page 335.
Syntax
InverseBetaDistribution <Lower Bound, Upper Bound> (x,
Alpha, Beta)
Where:
x is a probability associated with the beta distribution.
Alpha and Beta are distribution parameters.
Lower Bound is an optional lower bound of the interval of x.
Upper Bound is an optional upper bound of the interval of x.
Usage notes
The following are invalid conditions:
x, alpha, or beta is nonnumeric.
alpha 0 or beta 0.
x 0 or x 1.
x < Lower Bound or x > Upper Bound.
Lower Bound > Upper Bound.

353 2017, MicroStrategy Inc.


Functions Reference

InverseChiDistribution (inverse of chi-squared


distribution)
Returns the inverse of the given right-tailed Chi-squared distribution greater than or
equal to a pre-specified value. This function is used to compare observed results against
expected ones to assess the validity of a hypothesis.
For information on the Chi-squared function, see ChiSquareDistribution, page 337.
Syntax
InverseChiDistribution(x, df)
Where:
x is the probability associated with a given chi-squared distribution.
df is the number of degrees of freedom for the distribution.
Usage notes
If df is not an integer, it is truncated
The following are invalid conditions:
Either argument is nonnumeric
x < 0 or x >1
df < 1

InverseFisher (inverse of the Fisher transformation)


Returns the inverse of the Fisher transformation. This function is used to analyze
correlations between data arrays.
For information on the Fisher transformation function, see Fisher (fisher
transformation), page 342.
Syntax
InverseFisher(x)
Where:
x is the value for which the inverse of the Fisher transformation is performed.
Expression

Usage notes
This function results in an invalid value if x is nonnumeric.

2017, MicroStrategy Inc. 354


Functions Reference

InverseFDistribution (inverse of F-probability


distribution)
Returns the inverse of the F probability distribution. This function is used to return
critical values from the F distribution. For example, the output of an analysis-of-variation
(anova) calculation may include data for F-statistic, F-probability, and F-critical values at
the 0.05 level of significance. In such cases, the significance level can be used as the
probability argument for FINV to return the critical value of F.
For information on the F probability distribution function, see FDistribution (f-
probability distribution), page 342.
Syntax
InverseFDistribution (x, df1, df2)

Where:
x is the probability associated with the F right-tailed distribution.
df1 represents the degrees of freedom of numerator values.

df2 represents the degrees of freedom of denominator values.

Usage notes
If df1 or df2 is not an integer, it is truncated.

The following are invalid conditions:


An argument is nonnumeric.
x< 0 or x > 1.
df1 < 1

df2 < 1

InverseGammaDistribution (inverse of gamma


distribution)
Returns the inverse of the cumulative Gamma distribution.
For more information on the cumulative Gamma distribution function, see
GammaDistribution, page 347.
Syntax
InverseGammaDistribution (x, Alpha, Beta)
Where:
x is the value at which you want to evaluate the distribution.
Alpha is a distribution parameter.

355 2017, MicroStrategy Inc.


Functions Reference

Beta is a distribution parameter.


Usage notes
The following are invalid conditions:
Either alpha or beta is nonnumeric.
Either alpha 0 or beta 0.
x < 0 or x > 1.

InverseLognormalDistribution (inverse of lognormal


distribution)
Returns the inverse of the lognormal cumulative distribution.Ln(x) is normally
distributed using mean and standard deviation as parameters.
For more information on the lognormal cumulative distribution function, see
LognormalDistribution, page 359.
Syntax
InverseLognormalDistribution(x, Mean, Stdev)
Where:
x is the probability associated with the lognormal distribution.
Mean is the mean of ln(x).
Stdev is the standard deviation of ln(x).
Expression

In the expression that follows, mean = , stdev =.

Usage notes
The following are invalid conditions:
One of the arguments is nonnumeric.
x < 0.
x > 1.
stdev < 0.

2017, MicroStrategy Inc. 356


Functions Reference

InverseNormDistribution (inverse of normal cumulative


distribution)
Returns the inverse of the normal cumulative distribution for a given mean and standard
deviation.
For more information on the normal cumulative distribution function, see
NormalDistribution (normal cumulative distribution), page 361.
Syntax
InverseNormDistribution(x, Mean, Stdev)
Where:
x is the probability corresponding to a given normal distribution.
Mean is the arithmetic mean of the distribution.
Stdev is the standard deviation of the distribution.
Usage notes
If mean = 0 and stdev = 1, this function returns the standard normal distribution
The following are invalid conditions:
One of the arguments is nonnumeric.
stdev 0.

InverseNormSDistribution (inverse of standard normal


cumulative distribution)
Returns the inverse, or critical value, of the cumulative standard normal distribution.
This function computes the critical value so that the cumulative distribution is greater
than or equal to a pre-specified value.
For more information on the cumulative standard normal distribution function, see
StandardNormalDistribution (standard normal cumulative distribution), page 367.
Syntax
InverseNormSDistribution(x)
Where:
x is the probability corresponding to the normal distribution.
Usage notes
The following are invalid conditions:
x is nonnumeric.
x < 0 or x > 1.

357 2017, MicroStrategy Inc.


Functions Reference

InverseTDistribution (inverse of T-distribution)


Returns the inverse of the right-tailed T-distribution.
For more information on the right-tailed T-distribution function, see TDistribution, page
368.
Syntax
InverseTDistribution(Probability, df)
Where:
Probability is the probability associated with the t-distribution.
df is a value that indicates the degrees of freedom of the distribution.
Expression

Where:
Xis a random value that follows the t-distribution.
Usage notes
If df is not an integer, it is truncated.
The following are invalid conditions:
Either probability or df is nonnumeric.
Probability < 0 or probability > 1.
df < 1.

Kurtosis
Returns the kurtosis, or relative flatness, of the values in a given set of data.Kurtosis
characterizes the relative peakedness or flatness of a distribution when compared to a
normal distribution. A positive kurtosis indicates a relatively peaked distribution, while a
negative one signifies a relatively flat distribution.
Syntax
Kurtosis <FactID> (Argument)
Where:
Argument is a set of values represented by a fact or metric.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression
In the expression that follows, s is the sample standard deviation.

2017, MicroStrategy Inc. 358


Functions Reference

LognormalDistribution
Returns the lognormal cumulative distribution of a random variable X, where the
logarithm of X is normally distributed. LognormalDistribution takes mean and
standard deviation as parameters. This function is used to analyze data that has been
logarithmically transformed.
Syntax
LognormalDistribution(x, Mean, Stdev)
Where:
x is the value at which the function is evaluated.
Mean is the mean of ln(x).
Stdev is the standard deviation of ln(x).
Expression
In the expression that follows, mean = , stdev = .

Usage notes
The following are invalid conditions:
One of the arguments is nonnumeric.
x 0.
stdev 0.

MeanTTest (mean T-test)


Calculates the P-value of a T-test that tests the mean of the data against a particular
value. This function is used to determine the closeness in the value of the means of two
samples coming from the same population.Decision Reality: H0 is correctReality: H1 is
correctAccept H0No problemType 1 errorReject H0Type 2 errorNo
problemDefinitionP-value = Pr[Reject H0| H0 is correct]P-value is basically a
probability of making a Type 2 error.MeanTTest returns the p-value for the hypothesis
test in the following form:For H0: (Argument) = For H1:(Argument) < (Type = -1)
(Argument) (Type = 0: two-sided test)(Argument) > (Type = 1)(Argument) (Type = 2:
one-sided test)SyntaxMeanTTest <Hypothesis type> (Argument,
Hypothesis mean)Where:Argument is the value or list of values, represented by a

359 2017, MicroStrategy Inc.


Functions Reference

fact or metric, that contains sample data.Hypothesis mean is .Hypothesistype


denotes the type of t-test to be performed. Hypothesis type can be -1, 0, 1, or 2.
Definition
P-value = Pr[Reject H0| H0 is correct]

P-value is basically a probability of making a Type 2 error.

MeanTTest returns the p-value for the hypothesis test in the following form:
For H0:

(Argument) =
For H1:

(Argument) < (Type = -1)


(Argument) (Type = 0: two-sided test)
(Argument) > (Type = 1)
(Argument) (Type = 2: one-sided test)
Syntax
MeanTTest <Hypothesis type> (Argument, Hypothesis mean)
Where:
Argument is the value or list of values, represented by a fact or metric, that contains
sample data.
Hypothesis mean is .
Hypothesis type denotes the type of t-test to be performed. Hypothesis type can
be -1, 0, 1, or 2.

NegativeBinomialDistribution
This function determines the probability that there will be F failures before the Nth
success (S) with a constant probability of success P. The negative binomial distribution is
similar to the binomial distribution, but the number of successes is fixed and the number
of trials is variable.
As in the binomial distribution, trials are assumed to be independent. For example, to
find ten individuals with excellent reflexes, knowing that the probability that a candidate
has these qualifications is 0.3, this function calculates the probability that a certain
number of unqualified candidates will be interviewed before the ten people sought are
selected.
Syntax
NegativeBinomialDistribution(F, S, P)
Where:

2017, MicroStrategy Inc. 360


Functions Reference

F is the number of failures.


S is the threshold number of successes.
P is the probability of a success.
Expression
In the expression that follows, F = x, S = r.

Usage notes
If either F or S is not an integer, it is truncated.
The following are invalid conditions:
One of the arguments is nonnumeric.
P< 0 or P> 1.
F + (S - 1) 0.

NormalDistribution (normal cumulative distribution)


Calculates the normal distribution of the mean and standard deviation of a set of values.
Returns either the cumulative distribution or the probability density. This function is
widely applied in statistics, including in the area of hypothesis testing.
Syntax
NormalDistribution <Cumulative> (x, Mean, Stdev)
Where:
x is the value for which the distribution is sought.
Mean is the arithmetic mean of the distribution.
StDev is the standard deviation of the distribution.
Cumulative is a logical value that determines the form of the function:
If Cumulative=0 (default), it returns the cumulative distribution.
If Cumulative=1 it returns the probability density.
Expression
In the expression that follows, z = x, mean = , stdev = .

361 2017, MicroStrategy Inc.


Functions Reference

Usage notes
The following are invalid conditions:
Either mean or stdev is nonnumeric.
Stdev 0.
If mean = 0 and stdev = 1, the function returns the standard normal distribution.

PairedTTest (paired T-test, two-sample for means)


Calculates the P-value of a T-test on the means of two paired sets of
data. Two-sample analyses are used to determine the level of
variance between the means of paired samples.

Decision Reality: H0 is correct Reality: H1 is correct

Accept H0 No problem Type 1 error

Reject H0 Type 2 error No problem

Definition
P-value = Pr[Reject H0| H0 is correct]

P-value is basically a probability of making a Type 2 error.

PairedTTest returns the P-value for the hypothesis test in the following form:
H0:

([Argument1 Argument2]) = Offset


H1:

([Argument1 Argument2]) < Offset [Type = 1]


([Argument1 Argument2]) Offset [Type = 0: Two-sided test]
([Argument1 Argument2]) > Offset [Type = 1]
([Argument1 Argument2]) Offset [Type = 2: One-sided test]
Syntax

2017, MicroStrategy Inc. 362


Functions Reference

PairedTTest <Type, Offset> (Argument1, Argument2)


Where:
Argument1 is a fact or metric representing a set of sample values.
Argument2 is a fact or metric representing a set of sample values.
Type is a logical value that determines the form of the function.
Usage notes
One of the results of this sample is pooled variance, an accumulated measure of spread
data about the mean. Pooled variance is calculated as:

Pearson (Pearson product moment correlation


coefficient)
This function returns the Pearson product moment correlation coefficient of a set of
values. The coefficient is a dimensionless index that ranges from -1.0 to 1.0 (inclusive). It
is used to determine the extent of a relationship between two data sets.
Syntax
Pearson <FactID> (Argument1, Argument2)
Where:
Argument1 is a list of independent values represented by a fact or metric.
Argument2 is a list of dependent values represented by a fact or metric.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression
In the expression that follows, Argument1 = X, Argument2 = Y.

Usage notes
The following are invalid conditions:
Either Argument1 or Argument2 contains one or more null values.
Argument1 and Argument2 contain a different number of data points.

363 2017, MicroStrategy Inc.


Functions Reference

Permut (permutation)
Returns the number of possible permutations for a given number of items selected as a
group from a set.In permutation calculations, the internal order of the items selected
affects the return. This differs from calculations of combinations, in which the order of
the items selected does not affect the return. Combination (Combine) is categorized as a
mathematical function.
Syntax
Permut(Number, NumberChosen)
Where:
Number is the number of items in a set.
NumberChosen is the number of items selected for permutation.
Expression
In the expression that follows, Number = n; NumberChosen = k.

Usage notes
If an argument is not an integer, it is truncated.
This function returns an error value if:
Either argument is nonnumeric.
Number < 0.
NumberChosen < 0.
Number< NumberChosen.

PoissonDistribution
Returns the Poisson distribution of a random variable. This function predicts the number
of identified events to take place over a specified period. For example, it can predict the
number of cars to arrive at a toll plaza in a one-minute interval.
Syntax
PoissonDistribution <Cumulative> (x, lambda)
Where:
x is the number of events in the prediction.
lambda is the expected numeric value of the expression.

2017, MicroStrategy Inc. 364


Functions Reference

Cumulative is a logical value that determines the form of the probability


distribution returned:
If Cumulative = 0 (default), the function returns the probability that the
number of random events will be between 0 and x.
If Cumulative = 1, the function returns the probability that the number of
random events will be exactly x.
Expression
For type = 1:

For type = 0:

Usage notes
If x is not an integer, it is truncated.
The following are invalid conditions:
x or lambda is nonnumeric.
x < 0.
lambda 0.

RSquare (square of pearson product moment


correlation coefficient)
Returns the square of the Pearson product moment correlation coefficient for a set of
values. RSquare gives the proportion of the variance in y that is attributable to the
variance in x.
Syntax
RSquare <FactID> (Argument1, Argument2)
Where:
Argument1 is a list of data-point coordinates.
Argument2 is a list of data point coordinates.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.

365 2017, MicroStrategy Inc.


Functions Reference

Usage notes
The following are invalid conditions:
Argument1 and Argument2 have a different number of values.
Either Argument1 or Argument2 contains one or more NULL values.

Skew
Returns the skewness of a data set in a given list of values. Skewness is the degree of
asymmetry of a distribution in relation to its mean. A positive skewness indicates
asymmetry biased towards positive values, while a negative skewness indicates the
opposite.
Syntax
Skew <FactID> (Argument)
Where:
Argument is a fact or metric representing a list of values.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression
In the expression that follows, s is the sample standard deviation.

Slope (of a linear regression)


Returns the slope of a linear regression line. In a regression line passing through a set of
data points in data sets Argument1 and Argument2, the slope is the vertical distance
divided by the horizontal distance between any two points on the line. This ratio is also
known as the rate of change along the line.
Syntax
Slope <FactID> (Argument1, Argument2)
Where:
Argument1 is a fact or metric containing numerically dependent (y) data points.
Argument2 is a fact or metric containing numerically independent (x) data points.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Expression

2017, MicroStrategy Inc. 366


Functions Reference

Usage notes
The following are invalid conditions:
Either Argument1 or Argument2 contains NULL values.
Argument1 and Argument2 have a different number of values.
Example
For an example using the Slope function, see Hypothesis Testing example, page 72.

Standardize
Returns a normalized value from a distribution characterized by a mean and standard
deviation.
Syntax
Standardize(x, Mean, Stdev)
Where:
x is the value you want to normalize.
Mean is the arithmetic mean of the distribution.
Stdev is the standard deviation of the distribution.
Expression

Usage notes
The following is an invalid condition:
Stdev 0

StandardNormalDistribution (standard normal


cumulative distribution)
Returns the cumulative distribution of a standard normal variable. The mean is 0 and the
standard deviation is 1. This function can be used in lieu of a table of standard normal
curve areas.
Syntax
StandardNormalDistribution (Argument)

367 2017, MicroStrategy Inc.


Functions Reference

Where:
Argument is a metric representing a list of numbers.
Expression

Usage notes
This function results in an invalid value if Argument is nonnumeric.

SteYX (standard error of estimates)


Returns the standard error of estimates in linear regression with two variables (for
example, Y = Intercept + Slope * X).
Syntax
SteYX([Y], [X])
Where:
Y is an array or range of dependent data points.
X is an array or range of independent data points.
Expression

Usage notes
If an argument value contains text, logical values, or empty cells, those values are
ignored; however, cells with the value zero are included.
It is an invalid condition for Y and X to be empty or have a different number of data
points.

TDistribution
Returns the right-tailed distribution of a random variable.This function can be used in
lieu of a table of critical values to test hypotheses on small sample sets.
Syntax
TDistribution(x, df)

2017, MicroStrategy Inc. 368


Functions Reference

Where:
x is the numeric value at which the distribution is evaluated.
df is a value that indicates the degrees of freedom of the distribution.
Expression

Where:
X is a random value that follows the t-distribution.
Usage notes
If df is not an integer, it is truncated.
The following are invalid conditions:
Either x or df is nonnumeric.
df < 1.

Trend
The Trend function uses data recorded for certain time intervals to calculate and display
the expected value of data for an unknown time period. This is most commonly used to
predict future metric values based on historical data. For example, based on revenue data
for three years, you want to predict what your Revenue will be for the coming year.
This function uses a linear equation to predict future values. Therefore, it is best suited to
predict values that increase or decrease in a linear trend. For example, if your profits are
increasing by $10,000 each year, this is a scenario that is well suited for a prediction
based on a linear equation.
For a function that predicts values in a similar way for data that is increasing or
decreasing exponentially, see GrowthV (growth, vector input), page 348.
Syntax
Trend <FactID>(KnownData1,...,KnownDataN,
FutureTimeOffset)
Where:
KnownData1,...,KnownDataN are separate scalar values that provide the data to
use to predict a future value for. While you can use Trend to enter these values
manually, it is more common to use TrendV which can use a metric to enter a list of
values, as described in TrendV (trend, vector input), page 370.
FutureTimeOffset is the point in time after the final time interval available for
which to predict the data. This is commonly defined as an integer. For example, to
predict values for the year 2009 when the last available data you have is for 2007,
you would enter the value of 2 for FutureTimeOffset.

369 2017, MicroStrategy Inc.


Functions Reference

FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.
Example
As described in the syntax requirements, you can use Trend to enter values manually.
However, it is more common to use TrendV to use metrics and attributes to enter this
information, as described in TrendV (trend, vector input), page 370.

TrendV (trend, vector input)


The TrendV function uses data recorded for certain time intervals to calculate and
display the expected value of data for an unknown time period. This is most commonly
used to predict future metric values based on historical data. For example, based on
revenue data for three years, you want to predict what your Revenue will be for the
coming year.

You can use TrendV to predict values for any point in time, including dates that
have known data. However, this type of function is meant for predicting future,
unknown values.

This function uses a linear equation to predict future values. Therefore, it is best suited to
predict values that increase or decrease in a linear trend. For example, if your profits are
increasing by $10,000 each year, this is a scenario that is well suited for a prediction
based on a linear equation.
For a function that predicts values in a similar way for data that is increasing or
decreasing exponentially, see GrowthV (growth, vector input), page 348.
Syntax
TrendV <FactID, SortBy>(KnownData, FutureTimeOffset)
Where:
KnownData is an object representing a list of values. This list of values is the known
data to use to predict a future value for. KnownData is commonly used for metrics
that represent data such as revenue, profit, and so on.
FutureTimeOffset is the point in time after the final time interval available for
which to predict the data. This is commonly defined as an integer. For example, to
predict values for the year 2009 when the last available data you have is for 2007,
you would enter the value of 2 for FutureTimeOffset.
The TrendV function assumes that data is available for sequential time intervals with
no missing data. If your data meets these requirements, this allows you to use a
single expression to use on reports with varying time intervals such as year, month,
quarter, and so on. This is an advantage of TrendV in relation to ForecastV,
which requires you to specify a time interval such as year for each expression. For an
example, see the examples described below.
FactID is a parameter that forces a calculation to take place on a fact table that
contains the selected fact.

2017, MicroStrategy Inc. 370


Functions Reference

SortBy is a parameter that defines the order of calculation. For more information,
see BreakBy and SortBy parameters, page 33.
Example
The TrendV function is useful to display predicted future values of a metric as a subtotal
of the metric on a report.
For example, in the MicroStrategy Tutorial project a new subtotal named 2008 Trend
can be created with the following definition:
TrendV(x, 1)
Since this is in a subtotal, the x is a placeholder for a metric. When a subtotal is applied
to a metric on a report, the placeholder inputs that metrics values.
Also, 1 is used as the offset in the time interval to predict data for the first time interval
that is not known.
After making the new custom subtotal available for the Revenue metric (see the
Advanced Reporting Guide for steps to make custom subtotals available for metrics) a
report with the attribute Year and the metric Revenue is created. When the 2008 Trend
is displayed on the report, it displays the predicted value for 2008 Revenue, as shown
below:

This value is the same value predicted in the example using ForecastV, as described in
ForecastV (forecast, vector input), page 344. The advantage of using TrendV is that
since you do not have to define the attribute or other object that defines the time
interval, you can switch the time interval used by modifying the report. For example, the
report can be modified to display Quarter instead of Year, which allows the 2008 Trend
subtotal to predict the revenue for the first quarter of 2008. This is shown in the report
below.

371 2017, MicroStrategy Inc.


Functions Reference

The type of subtotal shown above could also be created using ForecastV, but it
would require you to create a separate subtotal that used the Quarter attribute to
define the time intervals.

VarTest (variance test)


Returns the P-value of a test that tests the variance of the data against a particular value.
Returns the P-value of a test that tests the variance of the data
against a particular value.

Decision Reality: H0 is correct Reality: H1 is correct

Accept H0 No problem Type 1 error

Reject H0 Type 2 error No problem

Definition
P-value = Pr[Reject H0| H0 is correct]

P-value is basically a probability of making a Type 2 error.

VarTest returns the P-value for the hypothesis test in the following form:
H0:

(Argument) =
H1:

(Argument) < [Type = 1]

2017, MicroStrategy Inc. 372


Functions Reference

(Argument) [Type = 0: Two-sided test]

(Argument) > [Type = 1]

(Argument) [Type = 2: One-sided test]

Syntax
VarTest <Hypothesis Type> (Argument, Hypothesis Variance)
Where:
Hypothesis Type is the parameter to set whether you are testing the probability
of the value being equal (0), less than (-1), greater than (1), or not equal to (2) the
sigma or variance.
Argument is a fact or metric representing the values you are testing.
HypothesisVariance is the variance you are testing.
Example
VarTest(M1, 1000) = 1000
For a set of values (M1), what is the probability that the variance of the value will be
equal to 1000? Note that M1 needs to have a defined dimensionality.
Usage notes
For each variance test function, two tests are performed. The first tests the probability of
the value being equal (0), and the second tests the probability of the value being less than
(-1), greater than (1), or not equal to (2) the sigma or variance. A parameter must be
specified for the second test.

WeibullDistribution
Returns either the cumulative distribution or the probability density of a random
variable. Used in reliability analysis, such as the calculation of the mean time to failure
for a given device.
Syntax
WeibullDistribution <Cumulative> (x, Alpha, Beta)
Where:
x is the numeric value at which the distribution is evaluated.
Alpha is a distribution parameter.
Beta is a distribution parameter.
Cumulative is a logical value that determines the form of the function:
If Cumulative=0 (default), it returns the cumulative distribution.

373 2017, MicroStrategy Inc.


Functions Reference

If Cumulative=1, it returns the probability density.


Expression
For the Weibull cumulative distribution:

For the Weibull probability density:

When alpha = 1, the Weibull exponential return is

Usage notes
The following are invalid conditions:
alpha or beta is nonnumeric.
x < 0.
alpha < 0.
beta < 0.

2017, MicroStrategy Inc. 374


A
MICROSTRATEGY AND
DATABASE SUPPORT FOR
FUNCTIONS
The functions provided with MicroStrategy can be evaluated by the MicroStrategy
Analytical Engine or passed to the database for processing. The sections and tables in
this appendix list MicroStrategy Analytical Engine and database support for
MicroStrategy functions. Reviewing this support allows you to determine whether a
MicroStrategy function can be supported for your MicroStrategy environment.
Analytical Engine support for functions, page 375
Databases that a function can be evaluated on, page 379
For additional information on how functions are processed, see Types of function
processing, page 57.

Analytical Engine support for functions


The functions listed in the following table are supported by the MicroStrategy Analytical
Engine. This allows metrics to be evaluated by MicroStrategy in cases where functions
cannot be evaluated by a database. It also allows metrics to support smart metric
functionality (see the Advanced Reporting Guide).

Function type Functions supported by the MicroStrategy Analytical Engine

Basic functions Add


Average
Avg
Count
First
GeoMean

2017, MicroStrategy Inc. 375


Functions Reference

Function type Functions supported by the MicroStrategy Analytical Engine

Greatest
Last
Least
Max
Median
Min
Mode
Multiply
Product
Stdev
StdevP
Sum
Var
VarP
Date and time functions All date and time functions are supported by the
MicroStrategy Analytical Engine
Internal functions Banding
BandingC
BandingP
Case
CaseV
Null and Zero functions IsNotNull
IsNull
NullToEmpty
NullToZero
ZeroToNull
OLAP functions ExpWghMovingAvg
ExpWghRunningAvg
FirstInRange
Lag
LastInRange
Lead
MovingAvg

376 2017, MicroStrategy Inc.


Functions Reference

Function type Functions supported by the MicroStrategy Analytical Engine

MovingCount
MovingDifference
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions NTile
NTileSize
NTileValue
NTileValueSize
Percentile
Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position

2017, MicroStrategy Inc. 377


Functions Reference

Function type Functions supported by the MicroStrategy Analytical Engine

RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators All Arithmetic functions are supported by the
MicroStrategy Analytical Engine
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF

378 2017, MicroStrategy Inc.


Functions Reference

Function type Functions supported by the MicroStrategy Analytical Engine

Not
Or
Data mining functions All data mining functions are supported by the MicroStrategy
Analytical Engine.
Financial functions All financial functions are supported by the MicroStrategy
Analytical Engine.
Mathematical functions All mathematical functions are supported by the
MicroStrategy Analytical Engine.
Statistical functions All statistical functions are supported by the MicroStrategy
Analytical Engine.

Databases that a function can be evaluated on


The tables below list the function support for each database that is certified for use with
MicroStrategy. If a function is listed for a database, the function can be evaluated within
that database. If a function cannot be evaluated within a database, the function may be
able to be supported by the MicroStrategy Analytical Engine (see Analytical Engine
support for functions, page 375).
Except where explicitly stated, only databases that are certified to work with
MicroStrategy 10 are listed below. For information on the certification and support for
databases, see the MicroStrategy Readme:
Actian Vectorwise, page 380
Aster Database, page 390
Calpont InfiniDB, page 404
EXASolution, page 414
Greenplum, page 420
Hadoop Hive, page 425
HP Vertica, page 428
IBM DB2, page 438
IBM Informix, page 473
IBM Netezza, page 485
IBM Red Brick, page 504
Infobright, page 508
Kognitio, page 513
Maria DB, page 517

2017, MicroStrategy Inc. 379


Functions Reference

Microsoft Access, page 522


Microsoft SQL Server, page 530
MySQL, page 559
Oracle, page 564
Actian Matrix, page 592
PostgreSQL, page 607
Salesforce.com, page 617
SAND CDBMS, page 621
SAP HANA 1.x, page 630
Sybase, page 639
Teradata, page 663

Actian Vectorwise
The tables listed below describe the MicroStrategy function support for Actian
Vectorwise databases:
Actian Vectorwise 2.5, page 380
Actian Vectorwise 3.0, page 385

Actian Vectorwise 2.5

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev

380 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

StdevP
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull

2017, MicroStrategy Inc. 381


Functions Reference

Function type Functions that can be evaluated on the database

OLAP functions OLAPRank


Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With

382 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 383


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
RandBetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

384 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Intercept
RSquare
Slope

Actian Vectorwise 3.0

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 385


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions OLAPRank
Rank and NTile functions Rank
String functions Concat
ConcatBlank

386 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In

2017, MicroStrategy Inc. 387


Functions Reference

Function type Functions that can be evaluated on the database

Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

388 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
RandBetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

2017, MicroStrategy Inc. 389


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Intercept
RSquare
Slope

Aster Database
The tables listed below describe the MicroStrategy function support for Aster Databases:
Aster Database 4.6.x, page 390
Databases that a function can be evaluated on, page 379
Aster Database 5.1.x, page 399

Aster Database 4.6.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

390 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

2017, MicroStrategy Inc. 391


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between

392 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 393


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Aster Database 5.0.x


Function type Functions that can be evaluated on the database

Basic functions Add

394 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 395


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions None
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

396 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between

2017, MicroStrategy Inc. 397


Functions Reference

Function type Functions that can be evaluated on the database

Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

398 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Aster Database 5.1.x

Function type Functions that can be evaluated on the database

Basic functions Add

2017, MicroStrategy Inc. 399


Functions Reference

Function type Functions that can be evaluated on the database

Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

400 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions None
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

2017, MicroStrategy Inc. 401


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between

402 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 403


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Calpont InfiniDB
The tables listed below describe the MicroStrategy function support for Calpont InfiniDB
databases:
Calpont InfiniDB 2.2.x, page 405
Calpont InfiniDB 3.x, page 410

404 2017, MicroStrategy Inc.


Functions Reference

Calpont InfiniDB 2.2.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 405


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions ConcatBlank
Concat

406 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In

2017, MicroStrategy Inc. 407


Functions Reference

Function type Functions that can be evaluated on the database

Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

408 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

2017, MicroStrategy Inc. 409


Functions Reference

Calpont InfiniDB 3.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

410 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions ConcatBlank
Concat

2017, MicroStrategy Inc. 411


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In

412 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 413


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

EXASolution
The tables listed below describe the MicroStrategy function support for EXASolution
databases:
EXASolution 4.x, page 415

414 2017, MicroStrategy Inc.


Functions Reference

EXASolution 4.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Median
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 415


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

416 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains

2017, MicroStrategy Inc. 417


Functions Reference

Function type Functions that can be evaluated on the database

Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

418 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation
Covariance
Intercept
RSquare
Slope

2017, MicroStrategy Inc. 419


Functions Reference

Greenplum
The tables listed below describe the MicroStrategy function support for Greenplum
databases:
Greenplum 4.x, page 420

Greenplum 4.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

420 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank

2017, MicroStrategy Inc. 421


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In

422 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 423


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation
Covariance
Intercept
RSquare
Slope

424 2017, MicroStrategy Inc.


Functions Reference

Hadoop Hive
The tables listed below describe the MicroStrategy function support for Hadoop Hive
databases:
Hadoop Hive, page 425

Hadoop Hive

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 425


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DaysBetween
Hour
Minute
Month
Second
Week
Year
Internal functions None
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

426 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 427


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Acos
Acosh
Asin
Asinh
Atan
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Statistical functions Covariance
Standardize

HP Vertica
The tables listed below describe the MicroStrategy function support for HP Vertica
databases:

428 2017, MicroStrategy Inc.


Functions Reference

HP Vertica 5.1 , page 429


HP Vertica 6.x , page 434

HP Vertica 5.1

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 429


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions None
Null and Zero functions NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin

430 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

2017, MicroStrategy Inc. 431


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

432 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Standardize

2017, MicroStrategy Inc. 433


Functions Reference

HP Vertica 6.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

434 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions None
Null and Zero functions NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin

2017, MicroStrategy Inc. 435


Functions Reference

Function type Functions that can be evaluated on the database

MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

436 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 437


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Standardize

IBM DB2
The tables listed below describe the MicroStrategy function support for IBM DB2
databases:
DB2 V9.5 for Linux, UNIX, and Windows, page 439

438 2017, MicroStrategy Inc.


Functions Reference

DB2 V9.7 for Linux, UNIX, and Windows, page 445


DB2 V10.1 for Linux, UNIX, and Windows, page 451
DB2 V10.5 for Linux, UNIX, and Windows, page 457
DB2 for i 6.1, page 463
DB2 for i 7.1, page 468

DB2 V9.5 for Linux, UNIX, and Windows

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 439


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

440 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

2017, MicroStrategy Inc. 441


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

442 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None

2017, MicroStrategy Inc. 443


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

444 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Intercept
RSquare
Slope

DB2 V9.7 for Linux, UNIX, and Windows

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 445


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

446 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

2017, MicroStrategy Inc. 447


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

448 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None

2017, MicroStrategy Inc. 449


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

450 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Intercept
RSquare
Slope

DB2 V10.1 for Linux, UNIX, and Windows

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 451


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

452 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

2017, MicroStrategy Inc. 453


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

454 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None

2017, MicroStrategy Inc. 455


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

456 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Intercept
RSquare
Slope

DB2 V10.5 for Linux, UNIX, and Windows

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 457


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

458 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper

2017, MicroStrategy Inc. 459


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

460 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None

2017, MicroStrategy Inc. 461


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

462 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Intercept
RSquare
Slope

DB2 for i 6.1

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 463


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions Rank
String functions Concat

464 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With

2017, MicroStrategy Inc. 465


Functions Reference

Function type Functions that can be evaluated on the database

Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

466 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions None

2017, MicroStrategy Inc. 467


Functions Reference

DB2 for i 7.1

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

468 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions Rank
String functions Concat

2017, MicroStrategy Inc. 469


Functions Reference

Function type Functions that can be evaluated on the database

ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With

470 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 471


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions None

472 2017, MicroStrategy Inc.


Functions Reference

IBM Informix
The tables listed below describe the MicroStrategy function support for IBM Informix
databases:
IBM Informix IDS 11.5 and Informix Ultimate Edition 11.7, page 473
IBM Informix Ultimate Edition 12.1, page 477
IBM Informix XPS 8.x, page 481

IBM Informix IDS 11.5 and Informix Ultimate Edition 11.7

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
Max
Min
Multiply
Stdev
Sum
Var

2017, MicroStrategy Inc. 473


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank

474 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

2017, MicroStrategy Inc. 475


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

476 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

IBM Informix Ultimate Edition 12.1

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
Max
Min

2017, MicroStrategy Inc. 477


Functions Reference

Function type Functions that can be evaluated on the database

Multiply
Stdev
Sum
Var
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull

478 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

OLAP functions FirstInRange


Lag
LastInRange
Lead
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
Rank and NTile functions None
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=

2017, MicroStrategy Inc. 479


Functions Reference

Function type Functions that can be evaluated on the database

Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

480 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

IBM Informix XPS 8.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
Max
Min

2017, MicroStrategy Inc. 481


Functions Reference

Function type Functions that can be evaluated on the database

Multiply
Stdev
Sum
Var
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull

482 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

OLAP functions None


Rank and NTile functions None
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains

2017, MicroStrategy Inc. 483


Functions Reference

Function type Functions that can be evaluated on the database

Not Ends With


Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

484 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

IBM Netezza
The tables listed below describe the MicroStrategy function support for IBM Netezza
databases:
IBM Netezza 5.0.x, page 486
IBM Netezza 6.0.x, page 492
IBM Netezza 7.0.x, page 498

2017, MicroStrategy Inc. 485


Functions Reference

IBM Netezza 5.0.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

486 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange

2017, MicroStrategy Inc. 487


Functions Reference

Function type Functions that can be evaluated on the database

Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr

488 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not

2017, MicroStrategy Inc. 489


Functions Reference

Function type Functions that can be evaluated on the database

Or
Data mining functions None
Financial functions None

490 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

2017, MicroStrategy Inc. 491


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Fisher
Intercept
InverseFisher
Pearson
RSquare
Skew
Slope
Standardize
SteYX

IBM Netezza 6.0.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

492 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange

2017, MicroStrategy Inc. 493


Functions Reference

Function type Functions that can be evaluated on the database

Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr

494 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not

2017, MicroStrategy Inc. 495


Functions Reference

Function type Functions that can be evaluated on the database

Or
Data mining functions None
Financial functions None

496 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

2017, MicroStrategy Inc. 497


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

IBM Netezza 7.0.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

498 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange

2017, MicroStrategy Inc. 499


Functions Reference

Function type Functions that can be evaluated on the database

Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr

500 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not

2017, MicroStrategy Inc. 501


Functions Reference

Function type Functions that can be evaluated on the database

Or
Data mining functions None
Financial functions None

502 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

2017, MicroStrategy Inc. 503


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

IBM Red Brick


The tables listed below describe the MicroStrategy function support for IBM Red Brick
databases:
IBM Red Brick 6.3, page 504

IBM Red Brick 6.3

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
Max
Min
Multiply
Sum

504 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

2017, MicroStrategy Inc. 505


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-

506 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators <


<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 507


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Ceiling
Exp
Floor
Int
Int2
Ln
Mod
Quotient
Round
Round2
Sqrt
Statistical functions None

Infobright
The tables listed below describe the MicroStrategy function support for Infobright
databases:
Infobright 4.0.x, page 508

Infobright 4.0.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply

508 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Product
Stdev
StdevP
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce

2017, MicroStrategy Inc. 509


Functions Reference

Function type Functions that can be evaluated on the database

Null and Zero functions IsNotNull


IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains

510 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 511


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions None

512 2017, MicroStrategy Inc.


Functions Reference

Kognitio
The tables listed below describe the MicroStrategy function support for Kognitio
databases:
Kognitio WX2 7.x, page 513

Kognitio WX2 7.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Min
Multiply
StdevP
Sum
VarP

2017, MicroStrategy Inc. 513


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions None
Null and Zero functions NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdevP
MovingSum

514 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=

2017, MicroStrategy Inc. 515


Functions Reference

Function type Functions that can be evaluated on the database

>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

516 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Ln
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Standardize

Maria DB
The tables listed below describe the MicroStrategy function support for Maria DB
databases:
Maria DB 5.5.x, page 518

2017, MicroStrategy Inc. 517


Functions Reference

Maria DB 5.5.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

518 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank

2017, MicroStrategy Inc. 519


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In

520 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 521


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Microsoft Access
The tables listed below describe the MicroStrategy function support for Microsoft Access
databases:
Microsoft Access 2000, 2002, or 2003, page 523

522 2017, MicroStrategy Inc.


Functions Reference

Microsoft Access 2007, page 526

Microsoft Access 2000, 2002, or 2003


Microsoft Access 2000, 2002, or 2003 are only supported for demonstration purposes.

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
Max
Min
Multiply
Sum

2017, MicroStrategy Inc. 523


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank

524 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
Position
RightStr
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

2017, MicroStrategy Inc. 525


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None
Mathematical functions Floor
Int
Int2
Ln
Mod
Quotient
Statistical functions None

Microsoft Access 2007


Microsoft Access 2007 is only supported for demonstration purposes.

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply

526 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Stdev
StdevP
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Millisecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce

2017, MicroStrategy Inc. 527


Functions Reference

Function type Functions that can be evaluated on the database

Null and Zero functions IsNotNull


IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains

528 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 529


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Cos
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sqrt
Tan
Statistical functions None

Microsoft SQL Server


The tables listed below describe the MicroStrategy function support for Microsoft SQL
Server databases:
Microsoft SQL Server 2005, page 531
Microsoft SQL Server 2008, page 536
Microsoft SQL Server 2008 R2 Parallel Data Warehouse, page 541
Microsoft SQL Server 2012, page 545
Microsoft SQL Server 2012 Parallel Data Warehouse, page 550
Microsoft SQL Database, page 555

530 2017, MicroStrategy Inc.


Functions Reference

Microsoft SQL Server 2005

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 531


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions OLAPRank
Rank and NTile functions Rank
String functions Concat

532 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With

2017, MicroStrategy Inc. 533


Functions Reference

Function type Functions that can be evaluated on the database

Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

534 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

2017, MicroStrategy Inc. 535


Functions Reference

Microsoft SQL Server 2008

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

536 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions OLAPRank
Rank and NTile functions Rank
String functions Concat

2017, MicroStrategy Inc. 537


Functions Reference

Function type Functions that can be evaluated on the database

ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With

538 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 539


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

540 2017, MicroStrategy Inc.


Functions Reference

Microsoft SQL Server 2008 R2 Parallel Data Warehouse

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 541


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
OLAPRank

542 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Rank and NTile functions Rank


String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between

2017, MicroStrategy Inc. 543


Functions Reference

Function type Functions that can be evaluated on the database

Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

544 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acosh
Asin
Asinh
Atan
Atanh
Ceiling
Cos
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Microsoft SQL Server 2012

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count

2017, MicroStrategy Inc. 545


Functions Reference

Function type Functions that can be evaluated on the database

GeoMean
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding

546 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap

2017, MicroStrategy Inc. 547


Functions Reference

Function type Functions that can be evaluated on the database

LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

548 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 549


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atanh
Atan2
Ceiling
Cos
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Microsoft SQL Server 2012 Parallel Data Warehouse

Function type Functions that can be evaluated on the database

Basic functions Add


Average

550 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Avg
Count
GeoMean
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 551


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
OLAPRank

552 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Rank and NTile functions Rank


String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between

2017, MicroStrategy Inc. 553


Functions Reference

Function type Functions that can be evaluated on the database

Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

554 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acosh
Asin
Asinh
Atan
Atanh
Ceiling
Cos
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Microsoft SQL Database

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count

2017, MicroStrategy Inc. 555


Functions Reference

Function type Functions that can be evaluated on the database

GeoMean
Max
Min
Multiply
Stdev
StdevP
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding

556 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions OLAPRank
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With

2017, MicroStrategy Inc. 557


Functions Reference

Function type Functions that can be evaluated on the database

Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

558 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

MySQL
The tables listed below describe the MicroStrategy function support for MySQL
databases:
MySQL 5.x, page 560

2017, MicroStrategy Inc. 559


Functions Reference

MySQL 5.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

560 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank

2017, MicroStrategy Inc. 561


Functions Reference

Function type Functions that can be evaluated on the database

InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In

562 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 563


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions None

Oracle
The tables listed below describe the MicroStrategy function support for Oracle databases:
Oracle 10g, page 565

564 2017, MicroStrategy Inc.


Functions Reference

Oracle 10gR2, page 570


Oracle 11g, page 576
Oracle 11g R2, page 581
Oracle 12c, page 587

Oracle 10g

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Median
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 565


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead

566 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

2017, MicroStrategy Inc. 567


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

568 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc

2017, MicroStrategy Inc. 569


Functions Reference

Function type Functions that can be evaluated on the database

Statistical functions Correlation


Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Oracle 10gR2

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Median
Min
Multiply
Product
Stdev
StdevP
Sum

570 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag

2017, MicroStrategy Inc. 571


Functions Reference

Function type Functions that can be evaluated on the database

LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim

572 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF

2017, MicroStrategy Inc. 573


Functions Reference

Function type Functions that can be evaluated on the database

Not
Or
Data mining functions None
Financial functions None

574 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation
Covariance

2017, MicroStrategy Inc. 575


Functions Reference

Function type Functions that can be evaluated on the database

Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Oracle 11g

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Median
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

576 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead

2017, MicroStrategy Inc. 577


Functions Reference

Function type Functions that can be evaluated on the database

MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

578 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 579


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc

580 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Statistical functions Correlation


Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Oracle 11g R2

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Median
Min
Multiply
Product
Stdev
StdevP
Sum

2017, MicroStrategy Inc. 581


Functions Reference

Function type Functions that can be evaluated on the database

Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag

582 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim

2017, MicroStrategy Inc. 583


Functions Reference

Function type Functions that can be evaluated on the database

SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF

584 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 585


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation
Covariance

586 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Oracle 12c

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
First
GeoMean
Greatest
Last
Least
Max
Median
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 587


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead

588 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingStdevP
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

2017, MicroStrategy Inc. 589


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

590 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc

2017, MicroStrategy Inc. 591


Functions Reference

Function type Functions that can be evaluated on the database

Statistical functions Correlation


Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Actian Matrix
The tables listed below describe the MicroStrategy function support for Actian Matrix
databases:

Actian Matrix was previously referred to as ParAccel.

Actian Matrix 3.1.x, page 592


Actian Matrix 3.5.x, page 597
Actian Matrix 4.0.x, page 602

Actian Matrix 3.1.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min

592 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Multiply
Product
Sum
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange

2017, MicroStrategy Inc. 593


Functions Reference

Function type Functions that can be evaluated on the database

Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

594 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 595


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc

596 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Statistical functions Covariance


Fisher
Intercept
InverseFisher
Kurtosis
RSquare
Slope
Standardize

Actian Matrix 3.5.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Sum
Stdev
StdevP
Var
VarP

2017, MicroStrategy Inc. 597


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount

598 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingMax
MovingMin
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <

2017, MicroStrategy Inc. 599


Functions Reference

Function type Functions that can be evaluated on the database

<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

600 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Tan
Tanh
Trunc
Statistical functions Covariance
Fisher
Intercept

2017, MicroStrategy Inc. 601


Functions Reference

Function type Functions that can be evaluated on the database

InverseFisher
Kurtosis
RSquare
Slope
Standardize

Actian Matrix 4.0.x


Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Sum
Stdev
StdevP
Var
VarP

602 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount

2017, MicroStrategy Inc. 603


Functions Reference

Function type Functions that can be evaluated on the database

MovingMax
MovingMin
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <

604 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 605


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Tan
Tanh
Trunc
Statistical functions Covariance
Fisher
Intercept

606 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

InverseFisher
Kurtosis
RSquare
Slope
Standardize

PostgreSQL
The tables listed below describe the MicroStrategy function support for PostgreSQL
databases:
PostgreSQL 8.4, page 607
PostgreSQL 9.x, page 612

PostgreSQL 8.4
Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 607


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
LastInRange
OLAPRank
Rank and NTile functions None

608 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

String functions Concat


ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains

2017, MicroStrategy Inc. 609


Functions Reference

Function type Functions that can be evaluated on the database

Not Ends With


Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

610 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation
Covariance
Intercept
RSquare
Slope

2017, MicroStrategy Inc. 611


Functions Reference

PostgreSQL 9.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

612 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
LastInRange
OLAPRank

2017, MicroStrategy Inc. 613


Functions Reference

Function type Functions that can be evaluated on the database

Rank and NTile functions Rank


String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between

614 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 615


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation
Covariance
Intercept
RSquare
Slope

616 2017, MicroStrategy Inc.


Functions Reference

Salesforce.com
The tables listed below describe the MicroStrategy function support for Salesforce.com
data sources:
Salesforce.com, page 617

Salesforce.com

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Sum
Date and time functions CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthsBetween
Quarter
Second
Week
Year

2017, MicroStrategy Inc. 617


Functions Reference

Function type Functions that can be evaluated on the database

Internal functions Coalesce


Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between

618 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 619


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atanh
Atan2
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Randbetween
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Statistical functions Standardize

620 2017, MicroStrategy Inc.


Functions Reference

SAND CDBMS
The tables listed below describe the MicroStrategy function support for SAND CDBMS
databases:
SAND CDBMS 6.1, page 621
SAND CDBMS 7.1, page 625

SAND CDBMS 6.1

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Median
Min
Multiply
Product
Stdev
Sum
Var

2017, MicroStrategy Inc. 621


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap

622 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

2017, MicroStrategy Inc. 623


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

624 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Ln
Log10
Power
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Statistical functions Correlation
Covariance
Intercept

SAND CDBMS 7.1

Function type Functions that can be evaluated on the database

Basic functions Add

2017, MicroStrategy Inc. 625


Functions Reference

Function type Functions that can be evaluated on the database

Average
Avg
Count
GeoMean
Max
Median
Min
Multiply
Product
Stdev
Sum
Var

626 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap

2017, MicroStrategy Inc. 627


Functions Reference

Function type Functions that can be evaluated on the database

LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Upper
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

628 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 629


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Acosh
Asin
Asinh
Atan
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Ln
Log10
Power
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Statistical functions Correlation
Covariance
Intercept

SAP HANA 1.x


The tables listed below describe the MicroStrategy function support for SAP HANA 1.x
databases:
SAP HANA 1.0 SP4 , page 631
SAP HANA 1.0 SP5 , page 635

630 2017, MicroStrategy Inc.


Functions Reference

SAP HANA 1.0 SP4

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Stdev
Sum
Var

2017, MicroStrategy Inc. 631


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Null and Zero functions NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions None

632 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
NotIn
NotLike
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 633


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions None

634 2017, MicroStrategy Inc.


Functions Reference

SAP HANA 1.0 SP5

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Stdev
Sum
Var

2017, MicroStrategy Inc. 635


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Null and Zero functions NullToZero
ZeroToNull
OLAP functions Lag
Lead
OLAPRank
Rank and NTile functions None
String functions None

636 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
NotIn
NotLike
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 637


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions None

638 2017, MicroStrategy Inc.


Functions Reference

Sybase
The tables listed below describe the MicroStrategy function support for SAP Sybase
databases:
SAP Sybase ASE 15.x, page 639
SAP Sybase IQ 15.2, page 643
SAP Sybase IQ 15.3, page 648
SAP Sybase IQ 15.4, page 653
SAP Sybase IQ 16.0, page 658

SAP Sybase ASE 15.x

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
Max
Min
Multiply
Sum

2017, MicroStrategy Inc. 639


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions None
Rank and NTile functions None
String functions Concat
ConcatBlank
InitCap

640 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

2017, MicroStrategy Inc. 641


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

642 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Statistical functions None

SAP Sybase IQ 15.2

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean

2017, MicroStrategy Inc. 643


Functions Reference

Function type Functions that can be evaluated on the database

Max
Median
Min
Multiply
Stdev
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC

644 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length

2017, MicroStrategy Inc. 645


Functions Reference

Function type Functions that can be evaluated on the database

Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

646 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 647


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation

SAP Sybase IQ 15.3

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count

648 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

GeoMean
Max
Median
Min
Multiply
Stdev
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding

2017, MicroStrategy Inc. 649


Functions Reference

Function type Functions that can be evaluated on the database

BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr

650 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

2017, MicroStrategy Inc. 651


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

652 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation

SAP Sybase IQ 15.4

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count

2017, MicroStrategy Inc. 653


Functions Reference

Function type Functions that can be evaluated on the database

GeoMean
Max
Median
Min
Multiply
Stdev
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding

654 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr

2017, MicroStrategy Inc. 655


Functions Reference

Function type Functions that can be evaluated on the database

Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

656 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

2017, MicroStrategy Inc. 657


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation

SAP Sybase IQ 16.0

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count

658 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

GeoMean
Max
Median
Min
Multiply
Stdev
Sum
Var
VarP
Date and time functions AddDays
AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding

2017, MicroStrategy Inc. 659


Functions Reference

Function type Functions that can be evaluated on the database

BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions FirstInRange
Lag
LastInRange
Lead
MovingAvg
MovingCount
MovingMax
MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr

660 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim
Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like

2017, MicroStrategy Inc. 661


Functions Reference

Function type Functions that can be evaluated on the database

Comparison operators for rank *<=


*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or
Data mining functions None
Financial functions None

662 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Mathematical functions Abs


Acos
Asin
Atan
Atan2
Ceiling
Cos
Degrees
Exp
Floor
Int
Int2
Ln
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sqrt
Tan
Trunc
Statistical functions Correlation

Teradata
The tables listed below describe the MicroStrategy function support for Teradata
databases:
Teradata 12, page 664
Teradata 13, page 669
Teradata 13.10, page 674
Teradata 14.0, page 679
Teradata 14.10, page 684

2017, MicroStrategy Inc. 663


Functions Reference

Teradata 12

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

664 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

2017, MicroStrategy Inc. 665


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

666 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 667


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

668 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Teradata 13

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 669


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

670 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

2017, MicroStrategy Inc. 671


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

672 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

2017, MicroStrategy Inc. 673


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Teradata 13.10

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

674 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg
MovingCount
MovingMax

2017, MicroStrategy Inc. 675


Functions Reference

Function type Functions that can be evaluated on the database

MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

676 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 677


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Sin
Sinh
Sqrt
Tan
Tanh
Trunc
Statistical functions Correlation

678 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Teradata 14.0

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

2017, MicroStrategy Inc. 679


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

680 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

2017, MicroStrategy Inc. 681


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

682 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc

2017, MicroStrategy Inc. 683


Functions Reference

Function type Functions that can be evaluated on the database

Statistical functions Correlation


Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

Teradata 14.10

Function type Functions that can be evaluated on the database

Basic functions Add


Average
Avg
Count
GeoMean
Greatest
Least
Max
Min
Multiply
Product
Stdev
StdevP
Sum
Var
VarP

684 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Date and time functions AddDays


AddMonths
CurrentDate
CurrentDateTime
CurrentTime
Date
DayOfMonth
DayOfWeek
DayOfYear
DaysBetween
Hour
MilliSecond
Minute
Month
MonthEndDate
MonthsBetween
MonthStartDate
Quarter
Second
Week
Year
YearEndDate
YearStartDate
Internal functions Banding
BandingC
Coalesce
Null and Zero functions IsNotNull
IsNull
NullToZero
ZeroToNull
OLAP functions Lag
Lead
MovingAvg

2017, MicroStrategy Inc. 685


Functions Reference

Function type Functions that can be evaluated on the database

MovingCount
MovingMax
MovingMin
MovingStdev
MovingSum
OLAPAvg
OLAPCount
OLAPMax
OLAPMin
OLAPRank
OLAPSum
RunningAvg
RunningCount
RunningMax
RunningMin
RunningStdev
RunningStdevP
RunningSum
Rank and NTile functions Rank
String functions Concat
ConcatBlank
InitCap
LeftStr
Length
Lower
LTrim
Position
RightStr
RTrim
SubStr
Trim

686 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Arithmetic operators -
x
+
/
U-
Comparison operators <
<=
<>
=
>
>=
Begins With
Between
Contains
Ends With
In
Like
Not Begins With
Not Between
Not Contains
Not Ends With
Not In
Not Like
Comparison operators for rank *<=
*<>
*=
*>=
*Between
Not*Between
Logical operators AND
IF
Not
Or

2017, MicroStrategy Inc. 687


Functions Reference

Function type Functions that can be evaluated on the database

Data mining functions None


Financial functions None
Mathematical functions Abs
Acos
Acosh
Asin
Asinh
Atan
Atan2
Atanh
Ceiling
Cos
Cosh
Degrees
Exp
Floor
Int
Int2
Ln
Log
Log10
Mod
Power
Quotient
Radians
Round
Round2
Sin
Sinh
Sqrt
Tan
Tanh
Trunc

688 2017, MicroStrategy Inc.


Functions Reference

Function type Functions that can be evaluated on the database

Statistical functions Correlation


Covariance
Fisher
Intercept
InverseFisher
Kurtosis
Pearson
RSquare
Skew
Slope
Standardize
SteYX

2017, MicroStrategy Inc. 689


GLOSSARY
A

account
Creates a relationship between access privileges and user login credentials.
Account permissions are based on granted roles, and each role has specific
privileges. See also: application administrator, application designer, subscription
administrator, system administrator.

Activation Code
A code used to activate MicroStrategy Intelligence Server after installation. This
code is sent to an email address provided during activation.

ad hoc query
A SQL query dynamically constructed by desktop tools and whose results are not
known before it is sent to the server. The user is asking a new question that has
not been answered by an existing report.

address
Set of information that tells Narrowcast Server how to send services to a
particular subscriber. Each address can be associated with one and only one
login/user. Each address is defined to use a specific device. See also: device.

address display
A name that is displayed by receiving systems. For email delivery, the address
display is used to identify the email address. For example,
johnsmith@microstrategy-tutorial.demo might be displayed as Smith, John by
the receiving email client.

address ID
An ID value that identifies individual addresses. Each address can be subscribed
to a subscription set multiple times.

administration object
Narrowcast Server components that control the processing of Narrowcast
messages, providing the means to acquire, format, and transmit messages to
recipients. These objects are created and configured by the system administrator.

2017, MicroStrategy Inc. 690


Functions Reference

administrator
A user who installs and monitors software and user configurations, maintains
the state of the software, and administers the MicroStrategy servers in the
platform. An administrator also defines users, assigns user login accounts and
user privileges, and analyzes the performance of the system.

aggregate data
Information or facts added together or "aggregated" to form summaries of
information considered as a whole.

aggregate function
A numeric function that acts on a column of data and produces a single result.
Examples include SUM, COUNT, MAX, MIN, and AVG.

aggregate table
A fact table that stores data that has been aggregated along one or more
dimensions.

All Subscription Data


An XML string that returns subscription information. It requires you to select an
XSL stylesheet to format the subscription information returned as desired.

analyst
A user who analyzes business data by accessing reports, performing drilling, and
otherwise manipulating reports and documents to see required business data. An
analyst receives useful data from information devices like smart phones and
email without necessarily understanding how such information is derived or
delivered.

analytical application
In MicroStrategy, a software application designed to provide predefined reports
and other analytics based on a predefined metadata repository, for various
industries to gain insight into their business data. The application is not fixed to a
specific physical schema, giving it the flexibility to be ported to a company's
existing data warehouse.

Analytical Engine
A component of the MicroStrategy Intelligence Server that performs all
advanced analytical functions. The Analytical Engine evaluates functions not
supported by the data warehouse RDBMS and it cross-tabulates reports.

analytics
Predefined tools that allow analysis within the Analysis Module's functional
areas. Analytics include reports (graph, grid, and so on), scorecards, dashboards,
and so on.

analytics library
The collection of reports and related objects in the MicroStrategy metadata
repository. Library objects include reports, metrics, filters, and prompts. Library

691 2017, MicroStrategy Inc.


Functions Reference

objects are defined based on attributes and facts (objects in the logical data
model.)

application administrator
Narrowcast Administrator user role. This role is designed for a Narrowcast
Administrator console user who performs some of the same tasks as the
application designer but has the ability to modify application objects created by
any Narrowcast Administrator account. This role is intended for quality
managers, development managers, configuration managers, and other users
requiring full access to all application objects. See also: application designer.

application designer
A Narrowcast Administrator user role. This role is designed for a Narrowcast
Administrator console user who develops and tests services, which include
documents, publications, schedules, and subscription sets. Configures and
manages Subscription Portals that allow end users to subscribe to a variety of
Narrowcast services via the Web. Configures data sources, content, and portal
layout. Publishes services and device types, and selects default devices for
Subscription Portals. Specifies information source properties and default site
preferences. Installs, configures, and administers the development environment.
Administers subscribers and subscriptions for development and testing purposes.
See also: application administrator.

application object
MicroStrategy object used to provide analysis of and insight into relevant data.
Application objects are developed in MicroStrategy Developer and they are the
building blocks for reports and documents. Application objects include these
object types: report, document, template, filter, metric, custom group,
consolidation, prompt.

application program interface (API)


A set of related functions that provides an interface between existing applications
and new applications. The API can be seen as a platform over a set of services on
which new applications can be built. The functions, or interfaces, are
implemented in a Dynamic Link Library and are defined in a standardized
syntax. Application functionality available in the platform can be integrated or
embedded into other applications through the use of the APIs.

attachment
Any file that is included in an email message. Attachments can originate from
outside Narrowcast Server (that is, any pre-existing file can be sent as part of a
service) or can be created by Narrowcast Server (that is, Narrowcast Server can
create an Excel attachment on the fly).

attribute
A data level defined by the system architect and associated with one or more
columns in a data warehouse lookup table. Attributes include data classifications
like Region, Order, Customer, Age, Item, City, and Year. They provide a means
for aggregating and filtering at a given level.

2017, MicroStrategy Inc. 692


Functions Reference

attribute element
A value of any of the attribute forms of an attribute. For example, New York and
Dallas are elements of the attribute City; January, February, and March are
elements of the attribute Month.

attribute form
One of several columns associated with an attribute that are different aspects of
the same thing. Every attribute supports its own collection of forms.

attrition rate
The number of lost employees divided by the number of employees in a given
time period.

authentication object
Object used by an information source that specifies who the user is and the
security context within which that user will interact with that information
source. Contains the security information required to make a connection or
perform task execution. Depending on the information source module, it should
contain information such as the user login name and password. For a
MicroStrategy Information Source, the object is a MicroStrategy user. See also:
personalization object.

auto text code


Dynamic text that is populated by the document or dataset, consisting of the
documents or datasets settings rather than data from the data warehouse.
Examples of auto text codes, which can be considered as a type of variable, are
document name, page number, and execution time. Auto text codes are
contained in text field controls on a document. See also: Data field, Text field.

autostyle
A set of predefined formatting that can be easily applied to many reports in
either MicroStrategy Developer or MicroStrategy Web. Autostyles are a good way
to apply a corporate look and feel to reports.

axes (axis)
(1) A vector along which data is displayed. There are three axesRow, Column,
and Page. When a user defines a template for a report, he places template units
attributes, dimensions, metrics, consolidations, and custom groupsalong each
axis. (2) One part of a multi-part graphical diagram. Many SDAM reports display
data on more than one graphical axis, such as the Quotation Activity Summary
report and the Quarterly Conversion Summary report.

banding
A method of organizing values according to a set of descriptive or meaningful
data ranges called buckets. Banding is also used for display purposes, where every
other row is a different color and the two colors alternate. Compare:
consolidation.

693 2017, MicroStrategy Inc.


Functions Reference

base table
A fact table that stores data at the lowest level of dimensionality.

block
A logical display element used to control the display of large reports in the
limited page and slide dimensions of Microsoft Word and PowerPoint. A block
may consist of multiple fetches. Blocks are defined by Microsoft Office product-
specific configuration settings.

break by
An attribute or hierarchy where calculations for an OLAP function restart. To
break by an attribute or hierarchy means to restart calculations that use OLAP,
or Relative, functions when the analytical engine reaches the next instance of
the specified attribute or hierarchy. Examples of OLAP functions include
RunningStdevP, Rank, NTile, and various expressions that calculate percent
values. To break by an attribute or hierarchy in an expression, you must set the
BreakBy parameter.

business intelligence (BI) system


A system that facilitates the analysis of volumes of complex data by providing the
ability to view data from multiple perspectives.

cache
A special data store holding recently accessed information for quick future
access. This is normally done for frequently requested reports, whose execution
is faster because they need not run against the database. Results from the data
warehouse are stored separately and can be used by new job requests that require
the same data. In the MicroStrategy environment, when a user runs a report for
the first time, the job is submitted to the database for processing. However, if the
results of that report are cached, the results can be returned immediately without
having to wait for the database to process the job the next time the report is run.

caching
A special data storage method in which recently accessed values are stored for
quick future access. Caching is used primarily to improve report execution
performance.

calculated expression
A metric obtained dynamically, directly from metrics on a document dataset, by
using at least one of the metrics in the document. Calculated expressions allow
you to use simple arithmetic operators (+, -, *, /) to combine metrics from
different datasets in the document. See also: Derived metric.

catalog
A table that contains the names of all non-temporary tables in a data warehouse.

2017, MicroStrategy Inc. 694


Functions Reference

characteristic attribute
An attribute that is a parent of a child attribute, but not part of the "main"
hierarchy associated with the child attribute. For example, consider a hierarchy
consisting of Year, Month, Day. Day of Week is a parent of Day, and a
characteristic attribute.

child attribute
The lower-level attribute in an attribute relationship. See also: parent attribute or
relationship.

clustering
A way of using machine resources to provide an efficient and robust processing
environment for a Narrowcast Server system. A cluster consists of two or more
machines, each machine running at least one Narrowcast Server component.
These components are: MicroStrategy Logging Server, distribution manager
(DM), execution engine (EE).

column
(1) A one-dimensional vertical array of values in a table. (2) The set of fields of a
given name and datatype in all rows of a given table. (3) MicroStrategy object in
the schema layer that can represent one or more physical table columns or no
columns.

component
A computing unit that provides a specific piece of the Narrowcast Server
functionality and interacts with other components. Examples are the Narrowcast
Administrator, execution engine, distribution manager, MicroStrategy Logging
Server, Object Repository, and Subscription Book Repository.

compound metric
A metric that cannot have a level placed on the entire metric, although it can be
set separately on each of the components.

conditional formatting
A method used to format specified controls in a document depending on
predefined criteria. It allows certain properties of controls, including sections, to
be controlled by data-driven conditions.

conditional metric
A metric containing filter criteria in its definition.

conditionality
Conditionality of a metric enables you to associate an existing filter object with
the metric so that only data that meets the filter conditions is included in the
calculation.

configuration objects
A MicroStrategy object appearing in the system layer and usable across multiple
projects. Configuration objects include (among others) these object types: users,
database instances, database logins, schedules.

695 2017, MicroStrategy Inc.


Functions Reference

connection string
Stores the information required to connect to a database server. A connection
string usually includes a DSN and the user ID and password required to log in to
the database server. This information varies depending on the particular database
server.

console user
A user who works with the Narrowcast Administrator console, managing
subscriptions, developing services, and administering the system, in contrast to
an end user. See also: end user.

consolidation
An object that can be placed on a template and is made up of an ordered
collection of elements called consolidation elements. Each element is a grouping
of attribute elements that accommodates inter-row arithmetic operations.
Compare: custom group.

content
The information in services, including all reports, miscellaneous text, and file
attachments that are accessible to the user. Content is dynamic in the sense that
personalization, error handling conditions, and device settings all influence the
overall content output and format of each service.

control
Any item in the documents Layout area that you can select. This can be a text
field, line, rectangle, image, panel stack, selector, Grid/Graph, or HTML
container. These different kinds of controls are referred to as control types. See
also: Grid/Graph, HTML container, Panel stack, Selector, Text field.

control default
A set of options that can be set for each type of control and each section in a
document. You can set the defaults according to the control that is currently
selected; afterward, its format is applied to any object of the same type that you
create in the document.

custom group
An object that can be placed on a template and is made up of an ordered
collection of elements called custom group elements. Each element contains its
own set of filtering qualifications.

custom SQL
Additional SQL code independently created by the user for execution against the
data warehouse. MicroStrategy provides tools to write custom SQL, including
Freeform SQL and Query Builder.

dashboard
An interactive, visually intuitive display of data. A dashboard can summarize key
business indicators (KPIs) to provide a status check. Users can change how they

2017, MicroStrategy Inc. 696


Functions Reference

view the dashboard's data using interactive features, such as selectors, grouping,
widgets, and visualizations. Users can explore their data via multiple paths, using
text, data filtering, and layers of organization. See also: Visual Insight dashboard,
Dashboard-style document.

dashboard-style document
A visually intuitive display of data that summarizes key business indicators for a
quick status check. A special type of document, dashboard-style documents
usually provide interactive features that let users change how they view the
dashboard-style documents data.

Data Explorer
A portion of the interface used to browse through data contained in the
warehouse. Users can navigate through hierarchies of attributes that are defined
by the administrator to find the data they need.

data field
Dynamic text that is populated from a dataset with data that originated in the
data warehouse (or an Intelligence Server cache). A data field is only a reference
to the metric, attribute, consolidation, or custom group on a report. Data fields
are contained in text field controls on a document. See also: Auto text code, Text
field.

data mart
A database, usually smaller than a data warehouse, designed to help managers
make strategic decisions about their business by focusing on a specific subject or
department.

data mart report


A special kind of report that saves its report data in a database rather than
returning those results to the user. Data mart reports either create a new table in
the database to store the report data or append the report data into an existing
table.

data modeling
A method used to define and analyze data requirements needed to support the
business functions of an enterprise. These data requirements are recorded as a
conceptual data model with associated data definitions. Data modeling defines
the relationships between data elements and data structures.

data source
A data source is any file, system, or storage location which stores data that is to
be used in MicroStrategy for query, reporting, and analysis. A data warehouse
can be thought of as one type of data source, which refers more specifically to
using a database as your data source. Other data sources include text files, Excel
files, and MDX cube sources such as SAP BW, Microsoft Analysis Services,
Oracle Essbase, and IBM Cognos TM1.

697 2017, MicroStrategy Inc.


Functions Reference

data source name (DSN)


Provides connectivity to a database through an ODBC driver. A DSN generally
contains host machine name or IP address, instance name, database name,
directory, database driver, User ID, password, and other information. The exact
information included in the DSN varies by DBMS. Once you create a DSN for a
particular database, you can use it in an application to call information from the
database.

data warehouse
A database, typically very large, containing the historical data of an enterprise.
Used for decision support or business intelligence, it organizes data and allows
coordinated updates and loads.

database connection
Stores all database-specific connection information such as DSN, driver mode
and SQL execution mode as well as connection caching information.

database instance
(1) Database server software running on a particular machine. Though it is
technically possible to have more than one instance running on a machine, there
is usually only one instance per machine. (2) The MicroStrategy object that
represents a logical definition of a data warehouse. It stores all information
necessary for MicroStrategy to access the data warehouse for a particular project.

database login
The login ID and password that MicroStrategy Intelligence Server uses to log in
to a particular database on behalf of a user. See also: login ID.

dataset
A MicroStrategy report used to define the data available on a Report Services
document.

Datasets
(1) A pane in the Document Editor that shows all objects (grouped by datasets)
that can be used in the document. (2) All objects that can be used in the
document as supplied by the datasets. Dataset objects are attributes,
consolidations, custom groups, and metrics.

decile(deciling)
The method by which a group is broken up into ten groups of equal elements.
The first decile consists of the top ten percent; the second, the 11th to 20th
percent; the third, the 21st to 30th percent; and so on. demographics,
demographic data. Data that locates, identifies, and describes a population and its
properties; for example, data describing the age groups of people living in certain
geographical areas or income categories. Other dimensions of demographic data
include race, religion, political preference, spending preferences, and family size.

demographics (demographic data)


Data that locates, identifies, and describes a population and its properties; for
example, data describing the age groups of people living in certain geographical

2017, MicroStrategy Inc. 698


Functions Reference

areas or income categories. Other dimensions of demographic data include race,


religion, political preference, spending preferences, and family size.

derived attribute
An attribute calculated from a mathematical operation on columns in a
warehouse table. For example, Age can be calculated from the expression
[Current DateBirth Date]. See also: attribute.

derived metric
A metric based on data already available in a report. It is calculated by the
Intelligence Server, not in the database. Use a derived metric to perform
calculations on report data after it has been returned from the database.

description column
Optional columns that contain text descriptions of attribute elements.

device
MicroStrategy object that represents message-receiving technology employed by
end users, such as a mobile phone or tablet. The device object specifies how a
publication should be formatted and transmitted to a specific device type. For
example, an Outlook 98 Device might specify that the first document in the
publication must be plain text and no longer than 128 characters. It might also
specify that the second document could be either plain text or HTML, and if it is
HTML, image references can be embedded. A device includes specifications for
both formatting and transmission. Devices are used in the definition of addresses
to specify what information transmitter will be used to transmit content to those
addresses and how that content should be formatted and packaged. See also:
address, content, information transmitter, administration object.

device ID
Numeric ID value that indicates the delivery method and device that a recipient
prefers. Devices are specified for subscriptions in dynamic subscription sets by
providing the device ID for each recipient. Device IDs are found under the
properties for each device within Narrowcast Administrator. For example, one
subscription might specify Outlook 2000, while another recipient might specify a
mobile device. One subscriber then only receives email content formatted for
Outlook while the other subscriber only receives mobile device content
formatted for this phone.

dimension
An element or factor making up a complete entity or variable (a quantity that
may assume any one of a set of values).

directory server
A directory service provider running on a particular machine. Directory servers
are often part of email servers, and stores user names, addresses, and
authentication information. Unlike the Subscription Book, however, they are
neither intended nor well-suited to store and retrieve subscriptions. Directory
servers usually enable client connections through the lightweight directory
access protocol (LDAP), and are often used for centralized user authentication

699 2017, MicroStrategy Inc.


Functions Reference

across many systems. See also: Subscription Book, Lightweight Directory Access
Protocol (LDAP).

display locale
Controls which object names are shown in Narrowcast Administrator. Since
objects can have multiple names to support end users in more than one
language, one name must be chosen for display in Narrowcast Administrator.
The display locale serves this role. The locale selected for this purpose should be
the one that the Narrowcast Administrator needs to use most frequently when
defining objects. See also: locale, execution locale, selection locale, system locale,
user locale.

distribution manager (DM)


(1) Delivery Engine object that receives service execution triggers, distributes
service data to the execution engines for processing, designates failover execution
engines, and tracks the status of other system components. If the primary
distribution manager fails, one of the backup distribution managers becomes the
primary and takes over processing where the failed component stopped. (2) Piece
of software or component used to instantiate a distribution manager object. (3)
Machine being used to instantiate the distribution manager object.

distribution set
A schedule and subscription set pair, created during service definition. Specifies
when and to whom Narrowcast Server will send a service. See also: schedule,
subscription set.

document
A display representing data coming from one or more reports, as well as
positioning and formatting information. A Report Services document is used to
format data from multiple reports in a single display of presentation quality.

document (Narrowcast)
A Narrowcast document contains the static information from the document
template and the dynamic content from document elements, and is ready to be
transmitted by Narrowcast Server. Each document has a specific type, such as
HTML, plain text, Excel, or derived from an imported file.

document (Report Services)


A type of data display that shows data usually coming from multiple reports. A
Report Services document formats data from multiple reports in a single display
of presentation quality. A dashboard is a type of Report Services document, often
including interactive components.

document element
Part of a Narrowcast document containing dynamic content that is generated
when that document is executed as part of a service. Consists of at least one
information object, plus error-handling instructions. Might include an XSL
stylesheet selection, depending on the type of information object chosen.

2017, MicroStrategy Inc. 700


Functions Reference

document formatter
Transforms the raw data of the information objects and the structure of the
Narrowcast document templates into a complete, formatted Narrowcast
document. The operations of document formatters include such tasks as XSL
processing and transformation, XML merging, character replacement, and string
padding. Formatting rules might account for device characteristics, locale
definition, and other recipient-specific formatting control information.

document formatting module (DFM)


A piece of software, or a component, that performs the work required for
turning Narrowcast document templates and information objects into
Narrowcast documents. The formatting process can use device characteristics,
locale definition, and other recipient-specific control information.

document template
Provides the structure and layout for a Narrowcast document. For example, an
Excel document template includes the basic workbook structure, any predefined
macros, and static worksheet content.

drill
A method of obtaining supplementary information after a report has been
executed. The new data is retrieved by re-querying the Intelligent Cube or
database at a different attribute or fact level.

drill path (attribute drill path)


In MicroStrategy, a path that determines which attributes are presented to an
interface; typically a project defines drill paths from parent attributes to their
children.

dynamic content
Document content that is dynamically retrieved at service execution time and
that can be personalized for each message recipient. Dynamic content is created
using content information objects. This content changes depending on the
results returned by the information object and can return different results for
different subscribers. For example, a weekly report returns different information
from week to the next, and each subscriber might request different content in
his report. Examples include a MicroStrategy report, a Web query, a SQL query,
or content from an external system. See also: static content.

dynamic subscription set


A subscription object containing at least one piece of subscription information
retrieved from an information object instead of from the Subscription Book
Repository. Useful for changing or alert-driven subscription sets. Some dynamic
subscription sets acquire all their information from a single information object.
Others retrieve only the Subscription ID from the information object while the
rest of the subscription information is acquired from the Subscription Book
Repository. Still others combine both methods. See also: segmentation
information object, Subscription ID, subscription information object,
subscription set.

701 2017, MicroStrategy Inc.


Functions Reference

editor
A dialog used to create and edit MicroStrategy Objects. There is a Filter Editor,
Template Editor, Attribute Editor, Metric Editor, Report Editor, and so on.

end user
A subscriber, the person receiving messages from Narrowcast Server service, in
contrast to a console user. See also: console user.

entity relationship diagram (ERD)


A diagram that provides a graphical representation of the physical structure of
the data in the source system, which lets you easily recognize tables and columns
and the data stored in those columns.

entry level
The lowest level set of attributes at which a fact is available for analysis.

ETL
Short for extraction, transformation, and loading. (1) The process used to
populate a data warehouse from disparate existing database systems. (2) Third-
party software used to facilitate such a process.

execution engine (EE)


(1) Delivery Engine object that controls the execution of narrowcast messages,
called services. It receives service segments from the distribution manager, then
determines the content and subscriber information with input from other
components, including the Subscription Book Module and information source
modules. (2) A piece of software or component that is used to instantiate an
execution engine object. (3) A machine being used to instantiate an execution
engine object.

execution locale
Determines how content is generated for the users who receive it. When a
document is created, the application designer can specify that the document
should be executed in a specific execution locale. The definition of the locale
then controls how information should be gathered, formatted, packaged and
delivered for this document. For example, an application designer might define a
French and a German locale to gather information in the appropriate languages.
If one of these locales is chosen as the execution locale for a document, all
dynamic content in this document is retrieved using the corresponding language.
See also: locale, display locale, selection locale, system locale, user locale.

expression
Formulas built from functions, attributes, facts, metrics, and consolidations that
can be used to define attribute forms, fact calculations, metrics, or filters.

2017, MicroStrategy Inc. 702


Functions Reference

fact
(1) A measurement value, often numeric and typically aggregatable, stored in a
data warehouse. (2) A schema object representing a column in a data warehouse
table and containing basic or aggregated numbersusually prices, or sales in
dollars, or inventory quantities in counts. See also: metric.

fact table
A database table containing numeric data that may be aggregated along one or
more dimensions. Fact tables may contain atomic or summarized data. Compare:
base table.

fetch
The amount of report data retrieved from one call to MicroStrategy Web
Services. Fetches are used to control the amount of network traffic between
MicroStrategy Office and MicroStrategy Web Services and the amount of
memory used by MicroStrategy Intelligence Server. When you execute a report
or document into a Microsoft product, the Execution Status dialog box displays
the progress of each fetch. Fetch size is controlled by Microsoft Office product-
specific configuration settings. Maximum fetch size is governed by an
Intelligence Server setting in MicroStrategy Developer.

filter
A MicroStrategy object that specifies the conditions that the data must meet to
be included in the report results. Using a filter on a report narrows the data to
consider only the information that is relevant to answer your business question,
since a report queries the database against all the data stored in the data
warehouse. A filter is composed of at least one qualification, which is the actual
condition that must be met for the data to be included on a report. Multiple
qualifications in a single filter are combined using logical operators. Examples
include "Region = Northeast" or "Revenue > $1 million". A filter is normally
implemented in the SQL WHERE clause.

Flash-enabled document
A Report Services document in which Flash Mode is selected as an available
display mode in the Document Properties dialog box.

flattened
A report display type in which the results of a report are displayed with all
attributes and metrics flattened side-by-side on one axis. Also, any subtotals
within the report are not displayed. It is convenient to execute your report or
HTML document in this display type if you intend to use Excels drop-down lists
to filter, hide/show data, and more.

folder
A MicroStrategy object used for grouping and storing in a single place a set of
objects that are similar, such as filters, templates, and reports.

703 2017, MicroStrategy Inc.


Functions Reference

folder list
A portion of the interface that lists all the folders found in the project in a
hierarchical fashion. It helps a user to visualize and browse through a
MicroStrategy project.

form
One of several columns that are different representations of the same thing, as
ID, Name, Long Description, Abbreviation.

function plug-in
Allows user-defined functions to be used by the MicroStrategy Analytical Engine.

governing parameters
Designed to keep the execution profile of a system within acceptable limits.
Protects the system from overconsumption of resources such as memory, disk
space, network capacity, and CPU cycles.

graph
A graphical image display of data. Sometimes referred to as a chart. See also
report.

graph analytic
An analytic showing data as points, lines, or bars, arranged according to axes
based on the chosen metrics. Although not all analytics can be displayed in every
graph type available, many analytics can be viewed in several ways. Choices for
graph display include bars, lines, area graphs, and three-dimensional graphs.

graph view
Report viewing mode that displays results as a graphical chart.

grid
A spreadsheet-style two-dimensional display of data. See also report.

grid analytic
An analytic consisting of rows and columns. Each row or column has a heading,
and each heading represents a prompt from the analytic. Grid analytics can be
modified easily, by drilling, moving columns, converting columns to rows,
sorting, and using page-by to display subsets of the analytic data as separate
pages.

grid view
Report viewing mode that displays result data in a tabular format.

Grid/Graph
A control placed in a document that displays information in the same way a
MicroStrategy report does.

2017, MicroStrategy Inc. 704


Functions Reference

grouping
A way to create a hierarchical structure for a document.

hierarchy
A set of attributes defining a meaningful path for element browsing or drilling.
The order of the attributes is typicallythough not alwaysdefined such that a
higher attribute has a one-to-many relationship with its child attributes.

hint
A comment that passes instructions to a database optimizer about choosing an
execution plan for a given SQL statement. In MicroStrategy, a hint can be
defined in VLDB properties to appear within a MicroStrategy-issued SQL
statement.

History List
A folder where users can retrieve the results of previously executed or scheduled
reports and documents.

HTML container
A control that either displays real-time information from the web or displays
formatted HTML.

HTML document
(1) A compound report displaying multiple grids and graphs. (2) The
MicroStrategy object that supports such a report.

ID column
A column that contains attribute element identification codes. All attributes must
have an ID column.

imported file
A file imported from outside of Narrowcast Server and stored in its original
format. For example, a text file contains only plain text and an HTML file
contains only HTML. Storing information in the file format preserves the
integrity of the original data since files cannot be modified with Narrowcast
Server. Files cannot be directly included in publications; they must first be
associated with imported documents, which serve as containers to allow them to
be attached to publications. Imported files can also be used as stylesheets or
templates for documents.

incremental fetch
A feature that returns a large set of information, such as subscriptions, to the
console in numerous small pieces as those pieces are needed. This ensures that
network traffic and client processing is kept to a minimum.

705 2017, MicroStrategy Inc.


Functions Reference

information delivery platform


Server that, whenever certain conditions are in effect, acquires information from
a variety of sources, personalizes that information, formats it, and transmits it
through a variety of technologies.

information object
Application object containing a set of instructions that specify how to get data
from a particular type of information source. Defined by using an information
source module, it is set up when a service is built and executed when the service
that uses it is run. Plays one of three roles: content, subscription, or
segmentation. See also: information object role, information object type,
information source,information source module (ISM).

information object role


Indicates how the information supplied by the information object is used by
Narrowcast Server. Three roles are available: Content ( Supplies information for
the document), Subscription ( Provides a list of subscribers and related
subscription information for dynamic subscription sets), Segment (Specifies the
first and last subscriptions for each segment of the subscription set). See also:
information object.

information object type


Indicates the format of the data returned by the information object and how
Narrowcast Server can use this data. Three types are available: Text (Returns a
plaintext string that is inserted directly into a document's content), XML
(Returns an XML string that must be combined with an XSL stylesheet to
produce content appropriate for each type of document), Image (Returns an
image in JPG format that is inserted directly into the document's content). See
also: information object.

information source
Contains information about how to connect to a specific source of content using
an information source module. The Delivery Engine requests and acquires
information from information sources. An information source uses
personalization objects for personalization. See also: information source module
(ISM), personalization object.

information source module (ISM)


An executable process that receives requests for information and returns that
information as well-defined data. It defines and processes information objects.
One ISM can be used to load various information sources. For example, an ISM
can be set up to access MicroStrategy Developer projects and can be used for any
MicroStrategy Developer projects that you want to use as an information source.
See also: information object, information source.

information transmission module (ITM)


An executable process or component designed to support a particular delivery
capability. For example, MicroStrategy Narrowcast Server provides the email
(SMTP) Module, which is used for the email (SMTP) Information Transmitter.
The ITM indicates what documents and document types it supports, as well as

2017, MicroStrategy Inc. 706


Functions Reference

the arrangement of these documents. Also, the ITM provides a user interface for
defining device characteristics. Those characteristics are stored in the Object
Repository and retrieved by the information transmission module to control
packaging and delivery. See also: device, document (Narrowcast), information
transmitter, publication.

information transmitter
Administration object that delivers formatted content, in the form of
publications, to end user devices. An information transmitter might serve the
purpose of sending email via SMTP or mobile device messages using an SMS
gateway. In general, an information transmitter supports one type of
transmission technology, such as SMTP, FTP, HTTP, or ODBC, but this is not a
requirement. Information transmitters depend on information transmission
modules. See also: device, document (Narrowcast), information transmission
module (ITM), publication.

installation log file


The MicroStrategy setup program generates a log file in text format. This log file
contains records of all actions performed by the setup program and by other
executable files related to installation.

Intelligent Cube
A copy of the report data saved in memory and used for manipulation of the view
definition. This division allows multiple reports with different views to share a
common data definition.

Java database connectivity


A Java API that enables Java programs to execute SQL statements. This allows
Java programs to interact with any SQL-compliant database. Since nearly all
relational database management systems (DBMSs) support SQL, and because
Java itself runs on most platforms, JDBC makes it possible to write a single
database application that can run on different platforms and interact with
different DBMSs. JDBC is similar to ODBC, but is designed specifically for Java
programs, whereas ODBC is language-independent.

join
A SQL operation that combines data from multiple tables into a single result
table.

KPI (key performance indicator)


An indicator gauging how well a company progresses in numerous areas such as
finance, customer service, and product availability and distribution.

707 2017, MicroStrategy Inc.


Functions Reference

Layout area
The middle panel of the Document Editor in which you place data or other
controls to determine the appearance of the document when it is viewed as a
PDF.

level
(1) In a data warehouse, facts are said to be stored at a particular level defined by
the attribute IDs present in the fact table. For example, if a fact table has a Date
column, an Item_ID column, and a fact column, that fact is stored at the
Date/Item level. (2) With regard to metric calculation, the level is the level of
calculation for the metric.

Lightweight Directory Access Protocol (LDAP)


An open standard that client computers use to communicate with directory
service providers. Client machines connect to a particular logical directory on a
particular physical directory server. See also: directory server.

Lightweight Directory Interchange Format (LDIF)


File format that is exported from LDAP directory services.

link
A connection from a document to another document or a report. A link lets an
analyst execute another document or report (the target) from a document (the
source), and to pass parameters to answer any prompts that are in the target.

load balancing
A strategy aimed at achieving even distribution of MicroStrategy Web Universal
user sessions across MicroStrategy Intelligence Servers. MicroStrategy achieves
four-tier load balancing by incorporating load balancers into MicroStrategy Web
Universal.

locale
Specifies what regional characteristics to apply to data and formatting, including
number format, date format, time format, and character sets. Your system might
support multiple locales. See also: display locale, execution locale, selection
locale, system locale, user locale.

Locale ID
Numeric ID value used to indicate the locale that a recipient prefers. Locales are
specified for subscriptions in dynamic subscription sets by providing the Locale
ID. Locale IDs are found under the properties for each locale within Narrowcast
Administrator. For example, one subscription might specify French, while
another recipient might specify German. One subscriber then only receives
French content while the other subscriber only receives German content.

2017, MicroStrategy Inc. 708


Functions Reference

logical data model


A graphical representation of data that is arranged logically for the general user,
as opposed to the physical data model or warehouse schema, which arranges
data for efficient database use.

login ID
Login identifier, typically supplied with a password.

lookup table
A database table used to uniquely identify attribute elements. They typically
consist of descriptions of dimensions. Lookup tables are usually joined to fact
tables to group the numeric facts in the fact table by dimensional attributes in
the lookup tables.

managed object
A schema object unrelated to the project schema, which is created by the system
and stored in a separate system folder. Managed objects are used to map data to
attributes, metrics, hierarchies and other schema objects for Freeform SQL,
Query Builder, and MDX cube reports.

manual fetch
A type of incremental report result fetching in which you are asked to confirm
each fetch. For example, when you execute a report, you are prompted to
confirm that each fetch, or section of report results, is displayed.

many-to-many relationship
An attribute relationship in which multiple elements of a parent attribute can
relate to multiple elements of a child attribute, and vice versa.

many-to-one relationship
An attribute relationship in which (1) multiple elements of a parent attribute
relate to only one element of a child attribute, and (2) every element of the child
attribute can relate to multiple elements of the parent.

MDX cube
An MDX cube is a collection or set of data retrieved from an MDX cube source,
which is imported into MicroStrategy and mapped to various objects to allow
query, reporting, and analysis on the data.

MDX cube report


The central focus for MicroStrategy users to query, analyze, and visually present
data from MDX cube sources in a manner that answers and evaluates their
business questions. MDX cube reports provide the same data display and analysis
functionality as standard MicroStrategy reports, but rather than reporting on
data from a relational data warehouse, MDX cube reports report on data from
MDX cube sources.

709 2017, MicroStrategy Inc.


Functions Reference

MDX cube source


When integrated with MicroStrategy, the third-party tools SAP BW, Microsoft
Analysis Services, Oracle Essbase, and IBM Cognos TM1 are referred to as MDX
cube sources. You can import and map data from these different MDX cube
sources in MicroStrategy to query, report on, and analyze data with
MicroStrategy. MicroStrategy can integrate with MDX cube source data as well
as access data from a relational database concurrently.

messaging application program interface (MAPI)


Allows Windows applications to send email messages through external email
programs. Designed primarily to connect client applications such as Microsoft
Outlook to mail servers such as Microsoft Exchange Server. Not intended for
server-to-server communications.

metadata
A repository whose data associates the tables and columns of a data warehouse
with user-defined attributes and facts to enable the mapping of the business
view, terms, and needs to the underlying database structure. Metadata can reside
on the same server as the data warehouse or on a different database server. It
can even be held in a different RDBMS.

metadata (or metadata repository)


A repository whose data associates the tables and columns of a data warehouse
with user-defined attributes and facts to enable the mapping of the business
view, terms, and needs to the underlying database structure. Metadata can reside
on the same server as the data warehouse or on a different database server. It
can even be held in a different RDBMS.

metric
(1) A business calculation defined by an expression built with functions, facts,
attributes, or other metrics. For example: Sum(dollar_sales) or [Sales] - [Cost].
(2) The MicroStrategy object that contains the metric definition. It represents a
business measure or key performance indicator. See also: fact.

MicroStrategy Analytics Module


A MicroStrategy project with prepackaged metadata, including best practices
reports, scorecards, and dashboards, key performance indicators, attributes,
business metrics, filters, and custom groups; default physical and logical data
models to allow the module to work with your physical schemas and data model
or with the modules packaged data warehouse schema; and a reference guide for
the Analysis Modules data model, the analysis area, metadata object definitions,
data dictionary, and individual report use scenarios.

MicroStrategy Intelligence Server


Core of the MicroStrategy architecture, MicroStrategy Intelligence Server
manages and organizes users, projects, and database connections; coordinates,
prioritizes, and executes all user requests; and allocates the resources necessary
to complete them. It tracks schedules, manages security, and provides the ability
to monitor and analyze the daily activity of the entire decision support
environment.

2017, MicroStrategy Inc. 710


Functions Reference

MicroStrategy Logging Client


Service that receives logging messages from Narrowcast Server components and
relays them to the MicroStrategy Logging Server. Logging messages include
segment status information, statistics information, and error event notification.
See also: MicroStrategy Logging Server.

MicroStrategy Logging Server


Server that collects logging messages from MicroStrategy Logging Clients and
distributes them to consumers. Logging messages include segment status
information, statistics information, and error event notification. See also:
MicroStrategy Logging Client.

multidimensional analysis
A form of analysis of the data in a data warehouse that includes many
relationships, each representing a dimension. For example, a retail analysis may
seek to understand the relationships among sales by region, by quarter, by
demographic distribution (income, education level, gender), and by product.
Multidimensional analysis provides results for these complex relationships.

multipart MIME
Part of the MIME specification, which includes more than one body part in a
body section within a MIME message. This is typically used to enable the
inclusion of separate text and HTML message bodies, embedded images, and
other body parts within an email message. See also: multipurpose Internet mail
extensions (MIME).

multipurpose Internet mail extensions (MIME)


The specification as defined by RFC 1521 (maintained by the Internet
Engineering Task Force at http://www.ietf.org/) for encoding message contents,
attached files, embedded images, and other embedded files into a single (typically
7-bit) data string. Many modern email clients support MIME. Because the
MIME specification includes encoding of message contents, it allows for
messages that use character sets other than US-ASCII. See also: multipart
MIME.

Narrowcast Administrator account


An object that allows a user to log in to MicroStrategy Narrowcast Administrator.
It is created within Narrowcast Administrator, and its definition is stored in the
Object Repository of a system. Each Narrowcast Administrator account is based
on a specific Windows account. When a new Narrowcast Server system is
created, two Narrowcast Administrator accounts are automatically added to it,
one of which is the local Administrator Windows account for the machine that
was used to create the system. Narrowcast Administrator accounts can have
various privileges, which control what Narrowcast Administrator users can do.
These privileges include: Service design, Application administration, System
administration, Subscription administration.

711 2017, MicroStrategy Inc.


Functions Reference

Narrowcast Server system


A collection of machines, software components, and objects that collectively
provide the ability to process and deliver narrowcast messages to recipients. The
objects that make up a system are divided into two categories, administration
objects and application objects. See also: administration object, application
object, clustering, component.

object
Conceptually, an object is the highest grouping level of information about one
concept, used by the user to achieve the goal of specified data analysis. More
concretely, an object is any item that can be selected and manipulated, including
folders, reports, facts, metrics, and so on.

object template
A MicroStrategy object that allows you to start with a predefined structure when
creating a new object. You can use object templates for many MicroStrategy
objects, including metrics, documents, reports, and report templates.

ODBC (open database connectivity)


An open standard with which client computers can communicate with relational
database servers. Client machines make a connection to a particular logical
database, on a particular physical database server, using a particular ODBC
driver.

ODBC driver
Software interface to an ODBC service provider. See also: open database
connectivity (ODBC).

ODBC driver manager


Coordinates communication between a client application and database server.
The client application tells the driver manager that it needs to connect using a
particular connection string. The DSN found in this connection string provides
the driver manager with the type of database server to which the application
needs access. From this information, the driver manager decides what driver to
use and initiates the communication.

one-to-many relationship
An attribute relationship in which every element of a parent attribute can relate
to multiple elements of a child attribute, while every element of the child
attribute relates to only one element of the parent. The one-to-many attribute
relationship is the most common in data models.

one-to-one relationship
An attribute relationship in which every element of the parent attribute relates to
exactly one element of the child attribute, and vice versa.

2017, MicroStrategy Inc. 712


Functions Reference

online analytical processing


In general, a system with analytical processing that involves activities such as
manipulating transaction records to calculate sales trends, growth patterns,
percent to total contributions, trend reporting, and profit analysis.

operational data store


A database that typically stores transactional data generated by and used in the
conducting of business operations. The data can be used as a trigger condition or
as content.

outline mode
Report viewing mode that creates indented, collapsible groupings of related
elements to make reports neater and easier to read.

page
An amount of data that is analogous to a page in a page-by report. Each page of a
page-by report represents one combination of elements from each attribute on
the page-by axis. For example, one page may contain data related to 2006 as well
as the Southeast region. A report with no attributes on the page-by axis is
considered to have one page. When you execute a report or document into a
Microsoft product, the Execution Status dialog box displays the progress of each
page.

page-by
Segmenting data in a grid report by placing available attributes, consolidations,
and metrics on a third axis called the Page axis. Since a grid is two-dimensional,
only a slice of the cube can be seen at any one time. The slice is characterized by
the choice of elements on the Page axis. By varying the selection of elements, the
user can page through the cube.

panel
A way of grouping data in a document so that users can navigate subsets of data
as if the subsets were pages in a smaller document. Each page, or layer of data,
is a panel; a group of panels is called a panel stack.

panel stack
The holder for a collection of panels, or layers of data, in a document. A user can
navigate or flip through the panels in a panel stack; only one panel is displayed at
a time.

parent attribute
The higher-level attribute in an attribute relationship with one or more children.
See also: child attribute or relationship.

partition
A relational database table broken down into smaller component tables. This can
be done at the database level or at the application level. See the MicroStrategy
System Administration Guide for more information.

713 2017, MicroStrategy Inc.


Functions Reference

partition mapping
The division of large logical tables into smaller physical tables based on a
definable data level, such as month or department. Partitions minimize the
number of tables and records within a table that must be read to satisfy queries
issued against the warehouse. By distributing usage across multiple tables,
partitions improve the speed and efficiency of database queries.

partition mapping table


A warehouse table that contains information used to identify the partitioned base
tables as part of a logical whole. (A partitioned base table is a warehouse table
that contains one part of a larger set of data. Partition tables are usually divided
along logical lines, such as time or geography.) Also referred to as a PMT.

persistence
A default behavior in MicroStrategy Office ensuring that every report and
document you run in an Excel workbook, PowerPoint presentation, or Word
document retains a link to MicroStrategy Intelligence Server. This ensures that
you and other users can refresh the reports and documents to retrieve the latest
data from the data warehouse or other data sources. Every report or document
executed also contains properties that are persisted; these properties determine
how the report or document is displayed and can be modified by users once it is
refreshed.

personalization
The process that allows each subscriber to receive data that has been filtered and
formatted specifically for him. Narrowcast Server uses locale, subscription, and
personalization objects to personalize services. See also: locale, personalization
object, subscription.

personalization object
An object handled by information sources for personalization. The three types
are: authentication, preference and security. The combination of the
authentication, preference, and security objects control the data that is returned
by an information object. See also:authentication object, information object,
information source, preference object, question object, security object.

personalization set
A combination of locale, authentication, security, and preference objects to
achieve personalized information, or information filtered and formatted
specifically for a subscriber.

personalized page execution


In the context of the MicroStrategy Information Source Module, each page of a
report is used as a result for one or more subscribers. See also: page-by,
personalization set.

personalized report execution


In the context of the Information Source Module, each result is derived from the
separate execution of a report. Answers to prompts and MicroStrategy users both
impact personalization in this execution mode. See also: personalization set.

2017, MicroStrategy Inc. 714


Functions Reference

physical address
The address location used to locate recipients and deliver messages. For email
delivery, this is a standard SMTP address in the form recipient@domain.xxx. No
physical address is required for delivery to the Subscription Portal. The physical
address required by other information transmitters depends on the individual
information transmitter.

physical warehouse schema


A detailed graphic representation of your business data as it is stored in the data
warehouse. It organizes the logical data model in a method that make sense from
a database perspective.

PIN
The personal identification number required by some delivery methods. A PIN is
not used for email, mobile device, or Subscription Portal delivery. The use of a
PIN by other information transmitters depends on the individual information
transmitter.

plug-in
An additional processing component integrated with MicroStrategy products.
For example, advanced statistical and financial functions can be added as
additional processing components.

plugin
An application that can easily be installed and executed by the MicroStrategy
Intelligence Server in one of several identical interfaces. For example, advanced
statistical and financial functions can be added as additional processing
components.

port number
The port number is how a server process identifies itself on the machine on
which it is running. For example, when the Intelligence Server machine receives
a network call from a client (Developer, Web Universal, Narrowcast Server,
Command Manager, and so on), it knows to forward those calls to the
Intelligence Server port number that is specified in the call.

portability
The ability of an analytical application to be integrated into an existing data
warehouse. To port the Analysis Module, you map the module to the physical
schema of an existing data warehouse.

portal
A site that offers a centralized access point for finding and managing
information via a variety of different services. It offers a broad array of resources
and services, such as email, discussion forums, search engines, and other online
services. A portal is accessible through the use of a web browser. See also:
Subscription Portal.

715 2017, MicroStrategy Inc.


Functions Reference

preference object
Type of personalization object that uses the answers to question objects to
specify the information that the user wants. At run-time, the preference object is
applied to information objects to personalize them. Preferences are usually
controlled by the user, but can be set by the subscription administrator. For an
Information Source, preference objects are prompt answers. See also:
personalization object, question object.

prefix
A prefix is stored in the project metadata associated with a table or tables and is
used by the Engine to generate SQL. Also, the Catalog Server uses it to obtain
table sample values and row counts. In most cases, it should match the name
space field since it is used to qualify on a specific table belonging to a certain
owner or name space. Prefixes can be defined and modified from the Warehouse
Catalog interface.

preview fetch
A type of incremental report result fetching in which you can see a preview of
the report data as it runs. You specify how many rows of the report you want to
preview at a time, and fetching automatically stops after one fetch.

primary key
In a relational database, the set of columns required to uniquely identify a record
in a table.

privilege
Assigned to users, a privilege defines the functionality available to a user, for
example, which objects a given user can create and which applications and
editors he can use.

process
An executing application comprising one or more threads. Processes use
temporary private address spaces and control operating system resources such as
files, dynamic memory allocations, pipes, and synchronization objects.

production metadata
The repository you create during the configuration portion of the installation
process, and which works with your data warehouse and serves as your working
metadata repository.

productivity analysis
A process that measures company productivity and identifies ways to increase it.

project
(1) The highest-level intersection of a data warehouse, metadata repository, and
user community, containing reports, filters, metrics, and functions. (2) An object
containing the definition of a project, as defined in [1]. The project object is
specified when requesting the establishment of a session.

2017, MicroStrategy Inc. 716


Functions Reference

project designer
The user category of one who creates projects and all of the schema objects
(facts, attributes, hierarchies) for a project. A project designer is thoroughly
familiar with the data model and schema object editors.

project source
Defines a connection to the metadata database and is used by various
MicroStrategy components to access projects. A direct project source is a two-
tier connection directly to a metadata repository. A server project source is a
three-tier connection to a MicroStrategy Intelligence Server. One project source
can contain many projects and the administration tools found at the project
source level are used to monitor and administer all projects in the project source.

prompt
MicroStrategy object in the report definition that is incomplete by design. The
user is asked during the resolution phase of report execution to provide an
answer that completes the information. A typical example with a filter is
choosing a specific attribute on which to qualify.

Property List
The list of settings used to specify the appearance or any other characteristic of a
control on a document.

publication
An ordered collection of documents that completely defines the content of a
service for a specific set of devices. Each publication is used for exactly one locale
and one information transmission module. A publication specifies: An
information transmitter, At least one device or A set of documents. See also:
device, document (Narrowcast), information transmitter.

qualification
The actual condition that must be met for data to be included on a report.
Examples include Region = Northeast or Revenue &gt; $1 million.
Qualifications are used in filters and custom groups. You can create multiple
qualifications for a single filter or custom group, and then set how to combine
the qualifications using the logical operators AND, AND NOT, OR, and OR NOT.

query
A request for data from a database or data warehouse. A report is a database
query.

Query Engine
The MicroStrategy component responsible for submitting SQL code to the
database.

question object
Type of personalization object that specifies the questions to ask the user to
determine the users preferences. Answers are used as preference objects. For a

717 2017, MicroStrategy Inc.


Functions Reference

MicroStrategy Information Source, a question object is defined by choosing a


report, and the questions to be asked depend on the definition of that report. In
personalized page execution mode, the user is asked what page to display, using
the page-by functionality. In personalized report execution mode, the questions
include all prompt objects defined on the selected report except the security
object prompt. See also: page-by, personalization object, preference object.

Quick Grid
A report display type in MicroStrategy Office in which the report is run as a CSV
and bulk-loaded into Excel in one fetch. Although this results in a fast report
execution time, formatting from the report definition, such as fonts, colors, and
thresholds is not applied. You can apply formatting to Quick Grids using
Microsoft Excels AutoFormats.

ranking
A type of OLAP function that returns the rank of a value in a group of values.
Rows with equal values with respect to the ordering are assigned the same rank.

relate table
A table containing the ID columns of two or more attributes, thus defining
associations between them.

relationship
An association specifying the nature of the connection between one attribute
(the parent) and one or more other attributes (the children). See also: child
attribute or parent attribute.

report
The central focus of any decision support investigation, a report allows users to
query for data, analyze that data, and then present it in a visually pleasing
manner.

report designer
The user category of one who creates all application objects such as grid and
graph reports, filters, templates, documents, consolidations, and custom groups.
The report designer understands all of the business intelligence capabilities of the
system.

report resolution
The process of filling placeholders such as prompts with information determined
at run time.

report template
A MicroStrategy object that allows you to define the layout of general categories
of information in a report. In a report template, you specify the information that
you want to retrieve from your data source, and the way that you want the data
to be displayed in Grid view. A report template does not include filter
information. Report templates are often referred to as just as templates.

2017, MicroStrategy Inc. 718


Functions Reference

retention(employee)
The process of maintaining or securing employee loyalty to minimize loss of key
talent.

role
A feature of the security subsystem that defines which objects a given user can
create and which operations he can perform. The different Narrowcast Server
roles are: System administrator (who manages the entire system), Application
administrator (who administers application objects only), Application designer
(who develops application objects only and cannot modify objects owned by
other users), Subscription administrator (who manages the Subscription Book),
Portal administrator (who configures and manages Subscription Portals).

schedule
Sets the time or frequency that a service is executed. A schedule represents a
recurrence pattern, not a fixed date. It is defined relative to time zones to
account for daylight savings, date boundaries, and other time zone-specific
issues. To allow subscribers globally to receive services at specific local times, a
service can contain more than one schedule.

schema
(1) The set of tables in a data warehouse associated with a logical data model. The
attribute and fact columns in those tables are considered part of the schema
itself. (2) The layout or structure of a database system. In relational databases,
the schema defines the tables, the fields in each table, and the relationships
between fields and tables.

schema object
MicroStrategy object created, usually by a project designer, that relates the
information in the logical data model and physical warehouse schema to the
MicroStrategy environment. These objects are developed in MicroStrategy
Architect, which can be accessed from MicroStrategy Developer. Schema objects
directly reflect the warehouse structure and include attributes, facts, functions,
hierarchies, operators, partition mappings, tables, and transformations.

scorecard
A type of tally sheet displaying a company's performance using key performance
indicators (KPIs) that gauge how well a company progresses in areas such as
finance, customer service, and product availability and distribution. See also KPI
(key performance indicator).

security filter
A qualification associated with a user that is applied to all queries executed by
that user.

security object
Type of personalization object that specifies what information the user should
have access to. Security filtering criteria applied to an information source during

719 2017, MicroStrategy Inc.


Functions Reference

subscriber interaction. For a MicroStrategy Information Source, it is a response


to a prompt in the form of a single attribute element. Each user can have one
security object per information source. See also: personalization object, security
object prompt.

security object prompt


Specifies which attribute in the project corresponds to a user or subscriber. The
answer to this prompt is used as a security object in MicroStrategy. See also:
prompt, security object.

security role
In a MicroStrategy security model, the set of privileges that a user can have.

segment
A group of subscriptions within a subscription set. Subscription sets are divided
into multiple pieces, or segments, so that the work required to execute a service
for all subscriptions can be distributed across multiple systems to allow parallel
work processing. The size of the segment is part of the service definition and
controls the work packages that are sent to each execution engine.

segmentation
The task of dividing the subscriptions within a subscription set into equal-sized
groups or segments. Segmentation ensures that all subscription information
objects and content information objects return only information for
subscriptions in the current segment. Subscription sets are always segmented
using the subscription ID, and the boundaries of segments are specified as
subscription ID values. For the MicroStrategy Information Source, segmentation
can be performed automatically by Narrowcast Server, or the application
designer can control how the subscription set is segmented and how subscription
information objects and content information objects constrain the information
they return.

segmentation information object


An information object that returns the segment boundary values for a
subscription set. Boundary values determine the size of the segment and are
always given in the form of subscription ID values corresponding to the first
subscription ID in each segment. Segment information objects are used only for
dynamic subscription sets.

segmentation prompt
A prompt that controls the information returned in a report used as a content
information object or subscription information object. Segmentation can be
performed automatically by Narrowcast Server, or prompts can be added to
content information objects and subscription information objects manually. This
process limits the number of subscriptions and content pages returned to only
provide information for subscriptions in the current segment.

selection locale
Determines which users should receive which content. When a user is created,
the subscription administrator (using Narrowcast Administrator) or the user

2017, MicroStrategy Inc. 720


Functions Reference

(using the Subscription Portal) selects a locale for which the user will receive
content. When a publication is created, the application designer chooses a
selection locale that determines which users receive the content in a publication.
If a user chooses Locale A, the application designer must choose Locale A as the
selection locale for a publication for the user to receive this publication. See also:
locale, display locale, execution locale, system locale, user locale.

selector
A type of control in a document that allows a user to: Flip through the panels in
a panel stack, to see different predefined layers of data, or pages, in the same
document. Display different attribute elements or metrics in a Grid/Graph.

SequeLink
Third-party (non-MicroStrategy) software that configures and manages data
access across multiple data stores, operating systems, and deployment options.

SequeLink machine
The machine where SequeLink is installed. This machine can be independent
from the rest of the Subscription Portal.

SequeLink services
SequeLink creates two NT services: SLAgent 54, which is the Administrator, and
SLSocket54, which is the Server.

server definition
A MicroStrategy object stored in the metadata containing information about the
configuration of an Intelligence Server.

server instance
The combination of an Intelligence Server running with a particular server
definition.

service
An object that provides all the information needed for the Delivery Engine to
correctly generate messages. That information includes the delivery conditions,
content, personalization rules, and subscriptions for sending messages for a
particular purpose. For example, one service delivers a daily message containing a
stock portfolio update, while another delivers alerts to mobile devices when the
value of a stock changes significantly. A service comprises at least one schedule-
subscription pair and a set of publications.

service designer
Narrowcast Administrator user role. This role is for a Narrowcast Administrator
console user who develops and tests services, which include documents,
publications, schedules, and subscription sets. Configures and manages
Subscription Portals that allow end users to subscribe to a variety of Narrowcast
services via the web. Configures data sources, content, and portal layout.
Publishes services and device types, and selects default devices for Subscription
Portals. Specifies information source properties and default site preferences.
Installs, configures, and administers the development environment. Administers

721 2017, MicroStrategy Inc.


Functions Reference

subscribers and subscriptions for development and testing purposes. See also:
application administrator.

service provider interface (SPI)


The specification for a set of related functions that can be implemented by a
software developer to augment or enhance the capabilities of a software product
or platform. This allows a developer to enable his software to be called by an
existing piece of software. See also: application program interface (API), plug-in.

service queue
In Narrowcast Administrator, a visual display of upcoming services to be
processed.

simple metric
A type of metric that can stand alone or be used as a building block for
compound metrics. Simple metrics always contain at least one aggregate
function, such as sum or average, applied to a fact, attribute, or another metric.
The entire metric can only contain one level.

slice
One page of content in a multi-page report. Narrowcast Server divides a single
multi-page report into multiple individual pages of content that are used as
personalized content for individual subscriptions. slicing attribute. A slicing
attribute is the attribute used to divide multi-page reports executed using
personalized page execution mode into multiple individual pages of content. The
first attribute on the page axis is used as the slicing attribute.

smart fetch
A type of report result fetching in which fetching continues until completion or
you cancel the operation. This is the default fetch method used in MicroStrategy
Office.

smart tag alias


A smart tag name that you can specify for a report or project. When Microsoft
Office recognizes this name, the MicroStrategy Office Smart Tag actions menu is
displayed. This means that when the name you specify is typed, it becomes a
smart tag that provides several options to execute the report.

Software Development Kit


A distribution package of application program development software and the
instructions for its use. Allows customization of an application.

sort
Arranging data according to some characteristic of the data itself (alphabetical
descending, numeric ascending, and so forth). See also: drill, page-by, subtotal.

sort by
The order of the return values of an expression in relation to the order of the
value or metadata object given. A sort by includes whether to sort in ascending
or descending order, and which metadata object to sort by. Sort by may also be

2017, MicroStrategy Inc. 722


Functions Reference

performed on the value of the subexpression, which is the input argument. To


sort by a value or metadata object in an expression, you must set the SortBy
parameter.

SQL (Structured Query Language)


The standardized query language established in 1986 by the American National
Standards Institute (ANSI) and used to request information from tables in a
relational database and to manipulate the tables' structure and data.

SQL Engine
The MicroStrategy Intelligence Server component that in report execution
converts report requests into SQL to be used for a database query.

static content
Document content that is contained directly in the document and does not
change from one service execution to the next. It cannot be personalized for
different subscribers. Examples include an HTML template, a static URL, and so
on. Compare with: dynamic content.

Structured Query Language (SQL)


A relational database language used to read data from tables in a relational
database and to manipulate their structure and their data.

subscriber
A person who receives content from at least one service. Each individual who
receives messages from Narrowcast Server has a login that provides password-
controlled access to subscription and user preference information for the
individual and his addresses. Subscribing at least one of these addresses to a
particular service allows the individual to receive messages.

subscription
An enrollment in a service; a subscription is composed of one user and one
address. subscription administrator Narrowcast Administrator user role.This role
is designed for a console user who manages the Subscription Book, including
users, addresses, and subscription sets. Also installs, configures, and administers
the Subscription Book Module.

Subscription Book
Contains all users, addresses, and subscription sets. Stored in the Subscription
Book Repository. See also: subscription set.

Subscription Book Module


A software component that provides the ability to create, edit, and use the
objects within a Subscription Book. Those objects include users, addresses, and
subscriptions. See also: Subscription Book Repository.

Subscription Book Repository


Stores all subscription information, including addresses and user information.

723 2017, MicroStrategy Inc.


Functions Reference

Subscription ID
The ID value used by Narrowcast Server to segment subscription sets. It is also
called Segmentation ID. This value is required for dynamic subscription sets.

subscription information
All information related to an individual subscription. This information allows
Narrowcast Server to deliver services to individual recipients in the desired
manner.

subscription information object


Retrieves subscription information for a given segment. See also: dynamic
subscription set, information object, segmentation, subscription information.

Subscription Portal
A feature of Narrowcast Server that allows end users to subscribe to Narrowcast
Server services offered through a web-based portal. This enables end users to
experience personalized and proactive interactions, based on user-defined
permissions and preferences. See also: portal.

subscription set
A collection of addresses that can be subscribed to a service. Subscription sets are
either static or dynamic. A static subscription set is an application object that
retrieves subscription information from the Subscription Book Repository.
Useful when the set of end user addresses that should receive a service does not
change. A dynamic subscription set is an application object containing at least
one piece of subscription information retrieved from an information object
instead of from the Subscription Book Repository. Useful for changing or alert-
driven subscription sets. Dynamic subscription sets can acquire some or all of
their information from the information object. The rest of the subscription
information is acquired from the Subscription Book Repository. See also:
subscription set object.

Subscription Set ID
A numeric value used to identify each subscription set.

subscription set object


Application object that defines how to retrieve or modify a subscription set. Does
not contain the subscription set, but provides instructions for how a Subscription
Book Module should retrieve it. See also: Subscription Book Module,
subscription set.

subtotal
A totaling operation performed for a portion of a result set. See also: drill and
page-by.

summary metric
A shortcut to a subtotal, or a subtotal metric allowing explicit aggregation in
documents. A summary metric allows you to select the function to use to
calculate the subtotal.

2017, MicroStrategy Inc. 724


Functions Reference

system administrator
Narrowcast Administrator user role. This role is designed for a console user who
performs the following tasks: Installs and configures the information delivery
platform, Migrates system objects and application objects, Monitors, analyzes,
and tunes the system to ensure the smooth and balanced operation of the
decision support or business intelligence environment, Performs troubleshooting
and error recovery.

system developer
Narrowcast Administrator user role. This role is designed for a Narrowcast
Server user who employs the SDK and embeds Narrowcast Server technology
into another product or application.

system locale
A language in which all objects are guaranteed to have a name. Since objects can
have names in several locales (languages), it is necessary to have one locale
where a name always exists for all objects. The system locale serves this role,
because the system locale cannot be deleted. See also: locale, display locale,
execution locale, selection locale, user locale, text container See: document
(Narrowcast).

table
The primary physical component of a data warehouse, logically consisting of
columns of data of varying types.

template
A MicroStrategy object that serves as a base on which you can build other objects
of the same type. You can create a template for almost any kind of MicroStrategy
object, such as filters or reports. Also see: Object template and Report template.

text field
A type of control in a document that displays text in the document. These
different types of text content are: Static text, which does not change and serves
as a label. Dynamic text, which is populated by the document or dataset. There
are two types of dynamic text: Data field, which is populated from a dataset with
data that originated in the data warehouse (or an Intelligence Server cache). A
data field is only a reference to an object on a report. Auto text code, which is
populated by the document or dataset, consisting of their settings rather than
data from the data warehouse. A combination of any or all of the above types in
one text field. See also: Data field, Auto text code.

threshold
Used to create conditional formatting for metric values. For example, a threshold
triggers the report that, if dollar sales is greater than $200, format that cell to
have a blue background with bold type.

725 2017, MicroStrategy Inc.


Functions Reference

transformation
A schema object that encapsulates a business rule used to compare results of
different time periods. Transformations are used in the definition of a metric to
alter the behavior of that metric.

Unique Message Identifier


An ID value that is unique for all messages delivered by any Narrowcast Server
system. It can be used for message tracking purposes to determine which
recipients have received and opened messages. This is typically done by creating
a URL containing this ID value that refers to a zero-size image on a Web server
that is configured to track references to this URL.

user hierarchy
Named sets of attributes and their relationships, arranged in specific sequences
for a logical business organization. They are user-defined and do not need to
follow the logical model.

user ID
A numeric value used to identify individual users.

user information
The collection of information, including first name, last name, address, zip code,
and other personal information, that changes from one subscriber to the next.

user locale
Defines which content the user receives. This is set up by either the subscription
administrator via Narrowcast Administrator or by the user via Subscription
Portal. The user locale must match the selection locale. See also:locale, display
locale, selection locale, system locale.

view filter
The set of criteria that restricts the report data that is currently being viewed. It
may include filtering conditions based on any of the objects on the report.

Visual Insight dashboard


A visually-striking, interactive display that takes a minimal amount of time to set
up and use. You can add text, interactive data visualizations, data filtering, and
multiple layers of organization to your dashboard, then take advantage of Visual
Insight's formatting options to customize your display.

widget
A type of control that presents data in a visual and interactive way; an interactive
Flash-only graph that dynamically updates when a new set of data is selected.

2017, MicroStrategy Inc. 726


Functions Reference

Some types include Gauge, Heat Map, and Stacked Area widgets.

727 2017, MicroStrategy Inc.


INDEX

A ApplyAgg 135
Abs 317 example 135
Accrint 261 ApplyComparison 135
Accrintm 264 example 28, 31, 136
Acos 318 in filter 31
Acosh 318 ApplyLogic 136
Add 94 example 136
analytical engine 57 ApplyOLAP 136
And 255 example 137
Apply functions 22, 27 ApplySimple 137
ApplyAgg 135 example 30, 137
ApplyComparison 135 argument 38
ApplyComparison in filter 31 prompts 38
ApplyLogic 136 arithmetic operator 241
ApplyOLAP 136 Divide 242
ApplySimple 137 Minus 241
example 28, 31, 136-137 Plus 242
syntax 134 Times 242
using extra arguments in 134 Unary Minus 243
Asin 318

2017, MicroStrategy Inc. 728


Functions Reference

Asinh 319 Min 108


Atan 319 Mode 109
Atan2 319 Product 111
Atanh 319 StDev 113
attribute 38 StDevP 112
attribute form expression 46 Sum 115
accessing 47 Var 118
average 95 VarP 116
moving 163 Begins With
OLAP 174 comparison operator 246
running 189 string function 224
Average 95 BetaDistribution 335
Avg 95 Between 246
AvgDev 334 Between Enhanced 254
BinomialDistribution 336
B
break by
banding functions 134
example 33
BandingC 140
parameter 33
BandingP 142
business example
base formula 40
confidence level 77
basic functions 94
hypothesis testing 72
Add 94
statistical descriptors - Simple 86
Average 95
Avg 95 C
First 99 Case 145
GeoMean 100 case functions 134
Greatest 101 Ceiling 320
Last 102 ChiSquareDistribution 337
mathematical (arithmetic Combine 320
operators) 241
comparison for rank operator 251
Max 106
Between Enhanced 254
Median 107
Equal Enhanced 253

729 2017, MicroStrategy Inc.


Functions Reference

Greater Equal Enhanced 253 count


Less Equal Enhanced 252 moving 165
Not Between Enhanced 254 OLAP 177
Not Equal Enhanced 252 running 190
comparison operator 243 Coupdaybs 267
Begins With 246 Coupdays 267
Between 246 Coupdaysnc 269
Contains 247 Coupncd 270
Ends With 247 Coupnum 271
Equal 245 Couppcd 272
Greater 245 Covariance 340
Greater Equal 245 CritBinomial 341
In 247 Cumipmt 273
Less Equal 244 Cumprinc 274
Less Than 243 CurrentDate 120
Like 248 CurrentDateTime 120
Not Begins With 249 CurrentTime 121
Not Between 250 custom expression with
ApplyComparison in filter 31
Not Contains 250
custom group expression 49
Not Ends With 250
accessing 50
Not Equal 244
Not In 251 D
Not Like 251 Data Mining functions 259
compound metric 40 Date 121
Confidence 338 date and time functions
consolidation element expression 48 CurrentDate 120
accessing 49 CurrentDateTime 120
Contains 247 CurrentTime 121
Correlation 339 Date 121
Cos 321 DateDiff 121
Cosh 321 DayOfMonth 122

2017, MicroStrategy Inc. 730


Functions Reference

DayOfWeek 123 deviation


DayOfYear 123 standard (population) 112
DaysBetween 124 standard (sample) 112-113
FiscalMonth 124 weighted standard (sample) 202
FiscalQuarter 125 dimensionality 40
FiscalWeek 125 Disc 277
FiscalYear 126 distribution, standard normal
cumulative 113, 202
Hour 127
Divide 242
MilliSecond 127
Dollarde 278
Minute 127
Dollarfr 279
Month 128
Duration 279
MonthEndDate 128
MonthsBetween 129 E
MonthStartDate 128 Effect 280
Quarter 129 Ends With
QuarterStartDate 130 comparison operator 247
Second 130 string function 227
toDateTime 131 engine
Week 131 analytical 57
WeekStartDate 132 query 57
Year 132 SQL 57
YearEndDate 132 Equal 245
YearStartDate 133 Equal Enhanced 253
DateDiff 121 example
DayOfMonth 122 And 27
DayOfWeek 123 Apply function 28, 136-137
DayOfYear 123 ApplyAgg 135
DaysBetween 124 ApplyComparison 28, 136
Db 275 ApplyLogic 136
Ddb 276 ApplyOLAP 137
Degrees 322 ApplySimple 30, 137

731 2017, MicroStrategy Inc.


Functions Reference

Avg 24 Coupdaysnc 269


break by 33 Coupncd 270
BreakBy 25 Coupnum 271
expression 19 Couppcd 272
function parameter effects 37 Cumipmt 273
Greater than 26 Cumprinc 274
Median 24 Db 275
metric dimensionality 41 Ddb 276
prompted date 28 Disc 277
RunningSum 25 Dollarde 278
sort by 34 Duration 279
Exp 322 Effect 280
ExponentialDistribution 341 Fv 281
expression 19 Fvschedule 281
example 19 Intrate 282
ExpWghMovingAvg 151 Ipmt 284
example 152 IRR 284
ExpWghRunningAvg 154 Mduration 285
MIRR 287
F
Nominal 287
fact expression 50
Nper 288
accessing 51
NPV 288
Factorial 323
Oddfprice 289
FDistribution 342
Oddfyield 293
filter
Oddlprice 294
ApplyComparison function in 31
Oddlyield 295
filter expression 52
Pmt 297
accessing 53
Ppmt 297
financial functions
Price 298
Accrint 261
Pricedisc 299
Accrintm 264
Pricemat 301
Coupdaybs 267

2017, MicroStrategy Inc. 732


Functions Reference

Pv 303 processing 57
Rate 303 using prompts 38
Received 304 function plug-in 69
Sln 306 function type 22
Syd 306 Apply function 27
Tbilleq 306 Apply functions
Tbillprice 307 example 28
Tbillyield 308 comparison function 26
Vdb 308 group-value function 24
XIRR 309 OLAP function 25
XNPV 312 single-value function 22-23
Yield 314 Fv 281
Yielddisc 315 Fvschedule 281
Yieldmat 316
G
First 99
GammaDistribution 347
first occurrence 233
GeoMean 100
FirstInRange 155
Greater 245
FiscalMonth 124
Greater Equal 245
FiscalQuarter 125
Greater Equal Enhanced 253
FiscalWeek 125
Greatest 101
FiscalYear 126
Growth 348
Fisher 342
GrowthV 348
Floor 324
Forecast 343 H
ForecastV 344 HeteroscedasticTTest 350-351
formula, metric 40 hierarchy 25
formula. See compound metric. 40 HomoscedasticTTest 350-351
FTest 346 Hour 127
function HypergeometricDistribution 351
basics of 21
I
parameters 32
If 146, 255

733 2017, MicroStrategy Inc.


Functions Reference

In 247 K
InitCap 227, 237 Kurtosis 358
initial capitalization 227, 237
L
Input Metric Formula dialog box 46
Lag 157
Insert Function Wizard 55
Last 102
Int 324
last occurrence 228
Intercept 352
LastInRange 161
internal functions
LastPosition 228
ApplyAgg 135
Lead 162
ApplyComparison 135
LeftStr 229
ApplyLogic 136
Length 229
ApplyOLAP 136
Less Equal 244
ApplySimple 137
Less Equal Enhanced 252
BandingC 140
Less Than 243
BandingP 142
Like 248
Case 145
Ln 325
Intrate 282
Log 325
InverseBetaDistribution 353
Log10 326
InverseChiDistribution 354
logical operator 255
InverseFDistribution 355
And 255
InverseFisher 354
If 146, 255
InverseGammaDistribution 355
Not 256
InverseLognormalDistribution 356
Or 256
InverseNormDistribution 357
LognormalDistribution 359
InverseNormSDistribution 357
Lower 230
InverseTDistribution 358
LTrim 231
Ipmt 284
IRR 284 M
IsNotNull 148 Match 231, 236
IsNull 148

2017, MicroStrategy Inc. 734


Functions Reference

mathematical functions Tan 333


Abs 317 Tanh 333
Acos 318 Trunc 333
Acosh 318 Max 106
Asin 318 maximum
Asinh 319 moving 168
Atan 319 OLAP 179
Atan2 319 running 191
Atanh 319 Mduration 285
Ceiling 320 MeanTTest 359-360
Combine 320 Median 107
Cos 321 metric 40
Cosh 321 base formula 40
Degrees 322 dimensionality 40
Exp 322 formula 40
Factorial 323 metric expression
Floor 324 accessing 44
Int 324 Metric Editor 44
Ln 325 MicroStrategy engine 57
Log 325 function 57
Log10 326 function type 6
Mod 326 structure 57
Power 327 MilliSecond 127
Quotient 328 Min 108
Radians 328 minimum 108
Randbetween 329 moving 169
Round 330 OLAP 182
Round2 331 running 192
Sin 332 Minus 241
Sinh 332 Minute 127
Sqrt 332 MIRR 287

735 2017, MicroStrategy Inc.


Functions Reference

Mod 326 Not Between 250


Mode 109 Not Between Enhanced 254
Month 128 Not Contains 250
MonthEndDate 128 Not Ends With 250
MonthsBetween 129 Not Equal 244
MonthStartDate 128 Not Equal Enhanced 252
moving Not In 251
average 163 Not Like 251
average, exponential weight 151 Nper 288
count 165 NPV 288
difference 167 NTile 206
maximum 168 NTileSize 207
minimum 169 NTileValue 208
standard deviation (population) 170 NTileValueSize 215
standard deviation (sample) 172 NULL/Zero functions
sum 173 IsNotNull 148
MovingAvg 163 IsNull 148
example 164 ZerotToNull 150
MovingCount 165
O
MovingDifference 167
occurrence, position of first 233
MovingMax 168
occurrence, position of last 228
MovingMin 169
Oddfprice 289
MovingStdev 172
Oddfyield 293
MovingStDevP 170
Oddlprice 294
MovingSum 173
Oddlyield 295
N OLAP
NegativeBinomialDistribution 360 average 174
Nominal 287 count 177
NormalDistribution 361 maximum 179
Not 256 minimum 182
Not Begins With 249 rank 184

2017, MicroStrategy Inc. 736


Functions Reference

sum 186 OLAPAvg 174


OLAP functions OLAPCount 177
ExpWghMovingAvg 151 OLAPMax 179
ExpWghRunningAvg 154 OLAPMin 182
FirstInRange 155 OLAPRank 184
Lag 157 OLAPSum 186
LastInRange 161 operator
Lead 162 arithmetic 241
MovingAvg 163 comparison 243
MovingCount 165 logical 255
MovingDifference 167 Or 256
MovingMax 168
P
MovingMin 169
PairedTTest 363
MovingStdev 172
parameter 32
MovingStDevP 170
accessing 35
MovingSum 173
BreakBy 33
OLAPAvg 174
common 33
OLAPCount 177
SortBy 34
OLAPMax 179
Pass-through functions. See Apply
OLAPMin 182 functions. 27
OLAPRank 184 Pearson 363
OLAPSum 186 Percentile 216
RunningAvg 189 PercentRank 217
RunningCount 190 PercentRankRelative 219
RunningMax 191 Permut 364
RunningMin 192 Plus 242
RunningStDev 194 Pmt 297
RunningStDevP 193 PoissonDistribution 364
RunningSum 195 Position 233
WeightedMean 201 Power 327
WeightedStDev 202 Ppmt 297

737 2017, MicroStrategy Inc.


Functions Reference

Price 298 PercentRank 217


Pricedisc 299 PercentRankRelative 219
Pricemat 301 Rank 221
Product 111 rank operator, comparison for 251
prompt rank, OLAP 184
using in functions 38 Rate 303
Pv 303 RDBMS platforms 134
Received 304
Q
Replace 233-234
Quarter 129
RightStr 234
QuarterStartDate 130
Round 330
query engine 57
Round2 331
Quotient 328
RScript 260
R RScriptAgg 260

R (analytics) RScriptAggU 260

functions 259 RScriptSimple 260

RScript 260 RScriptU 260

RScriptAgg 260 RSquare 365

RScriptAggU 260 RTrim 235

RScriptSimple 260 running

RScriptU 260 average 189

integrating with MicroStrategy 259 average, exponential weight 154

Radians 328 count 190

Randbetween 329 maximum 191

Rank 221 minimum 192

rank and NTile functions standard deviation (population) 193

NTile 206 standard deviation (sample) 194

NTileSize 207 sum 195

NTileValue 208 RunningAvg 189

NTileValueSize 215 RunningCount 190

Percentile 216 RunningMax 191

2017, MicroStrategy Inc. 738


Functions Reference

RunningMin 192 Correlation 339


RunningStDev 194 Covariance 340
RunningStDevP 193 FDistribution 342
RunningSum 195 Fisher 342
Forecast 343
S
ForecastV 344
Second 130
FTest 346
simple metric
Growth 348
base formula 40
GrowthV 348
Sin 332
HeteroscedasticTTest 350-351
single-value function 22
HomoscedasticTTest 350-351
Sinh 332
Intercept 352
Skew 366
InverseBetaDistribution 353
Sln 306
InverseChiDistribution 354
Slope 366
InverseFDistribution 355
sort by
InverseFisher 354
example 34
InverseGammaDistribution 355
parameter 34
InverseLognormalDistribution 356
SortBy parameter 150
InverseNormDistribution 357
SQL engine 57
InverseNormSDistribution 357
Sqrt 332
InverseTDistribution 358
standard deviation
Kurtosis 358
moving 170, 172
LognormalDistribution 359
running 193-194
MeanTTest 359-360
Standardize 367
NegativeBinomialDistribution 360
StandardNormalDistribution 367
NormalDistribution 361
statistical functions
PairedTTest 363
AvgDev 334
Pearson 363
BetaDistribution 335
Permut 364
BinomialDistribution 336
PoissonDistribution 364
ChiSquareDistribution 337
RSquare 365
Confidence 338

739 2017, MicroStrategy Inc.


Functions Reference

Skew 366 RTrim 235


Slope 366 SubStr 237
Standardize 367 toNumber 238
StandardNormalDistribution 367 toString 239
SteYX 368 Trim 239
TDistribution 368 Upper 240
Trend 369 SubStr 237
TrendV 370 subtotal expression 53
VarTest 373 accessing 54
WeibullDistribution 373 subtotals
WeightedCorr 197 user-defined 53
WeightedCov 199 sum
StDev 113 moving 173
StDevP 112 OLAP 186
SteYX 368 running 195
string Sum 115
from left 229 support. See technical support. 17
from right 234 Syd 306
string functions
T
Begins With 224
Tan 333
Ends With 227
Tanh 333
InitCap 227, 237
Tbilleq 306
LastPosition 228
Tbillprice 307
LeftStr 229
Tbillyield 308
Length 229
TDistribution 368
Lower 230
technical support 17
LTrim 231
Times 242
Match 231, 236
toDateTime 131
Position 233
toNumber 238
Replace 233-234
toString 239
RightStr 234

2017, MicroStrategy Inc. 740


Functions Reference

totals WeekStartDate 132


user-defined subtotals 53 WeibullDistribution 373
transformation expression WeightedCorr 197
accessing 54 WeightedCov 199
Trend 369 WeightedMean 201
TrendV 370 WeightedStDev 202
trim window size 63
left 231
X
right 235
XIRR 309
Trim 239
XNPV 312
Trunc 333
Y
U
Year 132
Unary Minus 243
YearEndDate 132
Upper 240
YearStartDate 133
upper case 240
Yield 314
user-defined subtotals 53
Yielddisc 315
V Yieldmat 316
value
Z
first in range 155
ZeroToNull 150
last in range 161
Var 118
variable. See compound metric. 40
variance
of a population 116
of a sample 118
VarP 116
VarTest 373
Vdb 308

W
Week 131

741 2017, MicroStrategy Inc.

You might also like