Functions Reference Version: 10.10 10.10, December 2017 Copyright © 2017 by MicroStrategy Incorporated. All rights reserved. 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 Library, 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 World’s Most Comprehensive Analytics Platform, The World’s 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,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,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, 9,565,175, 9,608,970, 9,640,001, 9,646,165, 9,680,908, 9,697,146, 9,697,350, 9,742,764, 9,742,781, 9,743,235, 9,762,564, 9,794,245, 9,801,053, and 9,807,074. Other patent applications are pending. 1 CONTENTS Overview and Additional Resources 5 Function categories 6 Function descriptions 6 How to find business scenarios and examples 7 What’s new in this guide 7 Prerequisites 9 Who should use this guide 9 Resources 9 Feedback 1. Understanding Functions in MicroStrategy 17 18 The basics of MicroStrategy objects, object definitions, and functions 18 Function syntax and formula components 20 Using functions in expressions 37 How MicroStrategy processes functions 55 Additional examples of functions in expressions 70 2. Standard Functions Basic functions 91 92 Date and time functions 116 Internal functions 130 NULL/Zero functions 145 OLAP functions 147 Rank and NTile functions 202 String functions 220 © 2017, MicroStrategy Inc. 3 Functions Reference 3. Operators Arithmetic operators 238 Comparison operators 240 Comparison for rank operators 248 Logical operators 252 4. Plug-In Package Functions 254 Data mining functions 255 Financial functions 257 Mathematical functions 267 Statistical functions 270 A. MicroStrategy and Database Support for Functions 4 238 277 Analytical Engine support for functions 277 Databases that a function can be evaluated on 281 Glossary 592 Index 629 © 2017, MicroStrategy Inc. 1 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 92 ▫ Date and time functions, page 116 ▫ Internal functions, page 130 ▫ NULL/Zero functions, page 145 ▫ OLAP functions, page 147 ▫ Rank and NTile functions, page 202 ▫ String functions, page 220 Chapter 3, Operators ▫ Arithmetic operators, page 238 ▫ Comparison operators, page 240 ▫ Comparison for rank operators, page 248 ▫ Logical operators, page 252 Chapter 4, Plug-In Package Functions ▫ Data mining functions, page 255 ▫ Financial functions, page 257 ▫ Mathematical functions, page 267 ▫ Statistical functions, page 270 Function descriptions For every function identified, the description includes: 6 • 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 © 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 MicroStrategy’s 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. What’s new in this guide MicroStrategy 10 • Documentation has been provided for the following new functions: ▫ Condition, page 94: 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 102: 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 114: A shortcut function, available for various features in MicroStrategy Web, that allows you to easily define transformations for the final metric expression. ▫ DateDiff, page 119: Calculates the length of time between two dates. ▫ FiscalMonth, page 122: Returns the numeric position of a month within a fiscal year, for a given input date. ▫ FiscalQuarter , page 122: Returns the numeric position of a quarter within a fiscal year, for a given input date. ▫ FiscalWeek, page 123: Returns the numeric position of a week within a fiscal year, for a given input date. ▫ FiscalYear, page 123: Returns the fiscal year of the input date. © 2017, MicroStrategy Inc. 7 Functions Reference 8 ▫ QuarterStartDate, page 127: 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 128: Converts a string of characters or a number into a date or timestamp. ▫ WeekStartDate, page 129: Returns the date of the first day of the week in which a date or timestamp occurs. ▫ NullToEmpty, page 146: Converts a value of NULL to an empty string. ▫ WeightedCorr (weighted correlation), page 194: Allows you to apply a weight, or relative significance to each correlation. ▫ WeightedCov (weighted covariance), page 196: Allows you to apply a weight, or relative significance to each covariance. ▫ WeightedMean, page 197: Allows you to apply a weight, or relative significance to each value when determining an average. ▫ WeightedStDev (weighted standard deviation of a sample), page 199: Allows you to apply a weight, or relative significance to each value in a set of values. ▫ PercentRank , page 214: Displays the ranking of values as a percentage. ▫ PercentRankRelative, page 215: Displays the ranking of values as a percentage, with the ranking based on a secondary data set. ▫ BeginsWith, page 221: Determines if a text string begins with a specified text pattern. ▫ Char (convert ASCII code to a character), page 221: Converts a decimal ASCII code into its associated character. ▫ ConcatAgg (concatenate plus delimiter), page 222: Takes all of the content from a single input and concatenates the content as a single string. ▫ EndsWith, page 224: Determines if a text string ends with a specified text pattern. ▫ LastPosition (last position of substring), page 225: Returns the starting position of the last occurrence of a series of characters in the input string. ▫ Match, page 228: Uses regular expressions to search a string for a pattern of characters and returns any matches that are found. ▫ RepeatStr (repeat string), page 230: Returns a character or string of characters the specified number of times. ▫ Replace, page 230: Searches a string for a pattern of characters and replaces each instance of those characters with the new characters you specify. ▫ Split, page 232: Searches a string, separates the contents into groups of characters based on a delimiter, and returns the string of characters requested. ▫ ToNumber (convert string to a number), page 235: Converts a string of characters to its applicable numeric value. © 2017, MicroStrategy Inc. Functions Reference • ▫ ToString (convert number, date, or timestamp to a string), page 235: Converts a number, date, or timestamp to a string of characters. ▫ TitleCap (title capitalization), page 234: 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 267: 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 267: 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 281. 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 281. 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 Support. © 2017, MicroStrategy Inc. 9 Functions Reference 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 book’s title in the iBookstore or Google Play. To view a list of manuals that are currently available, scan the following QR codes using your device’s camera: 10 • For iOS devices, scan the following QR code: • For Android devices, scan the following QR code: © 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 Google’s 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 organization’s 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. • 12 MicroStrategy Mobile Analysis Guide: Analyzing Data with MicroStrategy Mobile © 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 bold Indicates • 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 font • Calculations • 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. 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. © 2017, MicroStrategy Inc. 17 1 UNDERSTANDING FUNCTIONS IN MICROSTRATEGY This chapter provides the following information: • The basics of MicroStrategy objects, object definitions, and functions, page 18 • Function syntax and formula components, page 20 • Using functions in expressions, page 37 • Adding functions to expressions with the Insert Function Wizard, page 53 • How MicroStrategy processes functions, page 55 • Additional examples of functions in expressions, page 70 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. 18 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 Single-value 19 Function Examples • Arithmetic operators (–, +, /, *) MicroStrategy Objects That Can Use These Functions • Attribute form • Consolidation © 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 function’s 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. 20 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: 21 • 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 22. • 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 23. • 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 24. • 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 25. • 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 25. • 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 singlevalue function is used. For details, see Apply (Pass-through) functions, page 26. © 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 267 and Avg (average), page 93. © 2017, MicroStrategy Inc. 22 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 267 and Avg (average), page 93. 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 32). 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 32.) 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 93. Example 2: Median Median([Employee Age]) The only difference between Example 2 and Example 1 above is the fact that the groupvalue 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 105. 23 © 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 32). 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. 24 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. 25 © 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 MicroStrategy’s 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. 26 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 does not have a built- 27 © 2017, MicroStrategy Inc. Functions Reference 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 three items appear on your report, indicating that they (and only they) were on sale on 06/16/07. © 2017, MicroStrategy Inc. 28 Functions Reference For additional information about Apply functions, see Apply (Pass-Through) functions, page 131. 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 26. More information on ApplySimple functions, specifically, is found in ApplySimple, page 134. • 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 form—as opposed to the DESC or any other attribute form—is specified by @ID. • The placeholder, #0, stands for the argument [Hire Date]@ID that is passed to your RDBMS. (Apply functions use your database’s 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.) The above example used an Apply function, ApplySimple. The next example uses ApplyComparison. 29 © 2017, MicroStrategy Inc. Functions Reference 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 RDBMS—not 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. 30 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 33. 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 32 • BreakBy and SortBy parameters, page 32 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: 31 • Chapter 2, Standard Functions • Chapter 3, Operators • Chapter 4, Plug-In Package Functions © 2017, MicroStrategy Inc. Functions Reference 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 across customer regions can be useful, this report uses the BreakBy parameter to focus on revenue comparisons within each customer region. © 2017, MicroStrategy Inc. 32 Functions Reference • 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. 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 51). For example, an inventory report lists the on-hand supply for each day. The report subtotals are the last day’s 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: 33 • 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 53. • 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. © 2017, MicroStrategy Inc. Functions Reference 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 37 below that discusses the different types of expressions in MicroStrategy. 2 Click the Insert Function button, labeled as f(x) on the expression toolbar. 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 38 • Attribute form expressions, page 44 • Custom Group expressions, page 47 • Fact expressions, page 48 • Filter expressions, page 50 © 2017, MicroStrategy Inc. 34 Functions Reference 1 • Subtotal expressions, page 51 • Transformation expressions, page 52 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 53). 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. 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. 35 © 2017, MicroStrategy Inc. Functions Reference 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. 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 24. 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. © 2017, MicroStrategy Inc. 36 Functions Reference 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 204) 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. • 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 257) 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 259) 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: 37 • Metric expressions • Attribute form expressions • Consolidation expressions © 2017, MicroStrategy Inc. Functions Reference • Custom group expressions • Fact expressions • Filter expressions • Subtotal expressions • Transformation expressions • Derived elements • 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 groupvalue 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. © 2017, MicroStrategy Inc. 38 Functions Reference 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. 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 24). 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 39 © 2017, MicroStrategy Inc. Functions Reference 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. 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 © 2017, MicroStrategy Inc. 40 Functions Reference if a report contains cost by year and month, the numbers are calculated to reflect yearly cost data. Example 3: Dimensionality for compound metrics Avg(Revenue){~ +}/ Sum(Revenue) {~ +} 41 © 2017, MicroStrategy Inc. Functions Reference 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 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. © 2017, MicroStrategy Inc. 42 Functions Reference To access the Metric Editor using Web 1 Log in to a project. 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: 4 • 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. 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: 43 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 © 2017, MicroStrategy Inc. Functions Reference 5 Click Save to save your changes. For additional steps to define metrics using Web, see the MicroStrategy Web Help . 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: 3 • 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. 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. © 2017, MicroStrategy Inc. 44 Functions Reference This example can be found in the MicroStrategy Tutorial project in the following folder: MicroStrategy Tutorial/Schema Objects/Attributes/Geography. 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 customer’s 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 customer’s first name, middle name, and last name. • The syntax of apply functions is database-specific. For more information, see Internal functions, page 130. 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. • 45 Type the function name and all required expression syntax directly in the Enter your formula here box. © 2017, MicroStrategy Inc. Functions Reference 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. 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}) © 2017, MicroStrategy Inc. 46 Functions Reference • CE06 = Abs({CE04} – {CE05}) For more information on consolidations, see the MicroStrategy Advanced Reporting Guide. 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. 47 © 2017, MicroStrategy Inc. Functions Reference Example 1: Subtraction ( - ) ([Unit_Profit] - [Unit_Cost]) > 500 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. © 2017, MicroStrategy Inc. 48 Functions Reference Derived fact expressions can only use single-value functions, including simple arithmetic operators (+, -, /, *). See the following two examples. 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 49 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: © 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. 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. © 2017, MicroStrategy Inc. 50 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}){} 51 © 2017, MicroStrategy Inc. 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: © 2017, MicroStrategy Inc. 52 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. 53 © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 54 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. • 55 Those that can be processed either by the Analytical Engine or by the database. © 2017, MicroStrategy Inc. 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] © 2017, MicroStrategy Inc. 56 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, WJXBFS1 DOUBLE) 57 © 2017, MicroStrategy Inc. Functions Reference 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. © 2017, MicroStrategy Inc. 58 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 year’s revenue instead of this year’s 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: 59 © 2017, MicroStrategy Inc. 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) © 2017, MicroStrategy Inc. 60 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 61 © 2017, MicroStrategy Inc. 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 © 2017, MicroStrategy Inc. 62 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: 63 © 2017, MicroStrategy Inc. 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 62) and 6B (in Report 6B (DB OLAP function) Oracle , page 64) 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: © 2017, MicroStrategy Inc. 64 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. 65 © 2017, MicroStrategy Inc. 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 from ORDER_FACT a11, © 2017, MicroStrategy Inc. 66 Functions Reference 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 so on. These functions are located at ...Schema Objects/Functions and Operators/Plug-In Packages. 67 © 2017, MicroStrategy Inc. Functions Reference 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: • Byte • Short © 2017, MicroStrategy Inc. 68 Functions Reference • 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 69 1 From ...\MicroStrategy\Desktop, click FPWizard.exe. 2 Follow the prompts to install. © 2017, MicroStrategy Inc. Functions Reference 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 © 2017, MicroStrategy Inc. 70 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. 71 © 2017, MicroStrategy Inc. 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. Call Center is related to the fact table via Employee. © 2017, MicroStrategy Inc. 72 Functions Reference You need a table with a structure similar to the following: Call Center Day Daily Sales (last year) Daily Sales (current year) Northwest 1 123456 123456 ... 123456 123456 N 123456 123456 1 123456 123456 ... 123456 123456 N 123456 123456 Southeast 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. 3 • 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. 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: HeteroscedasticTTest([Daily Sales (last year)], [Daily Sales (current year)]) {~+} 73 © 2017, MicroStrategy Inc. Functions Reference 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) 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, © 2017, MicroStrategy Inc. 74 Functions Reference 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 year’s sales using the transformation Last Year’s. • 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: 75 • Who are my valuable customers? (Example 1), page 76: Determines valuable customers as those whose average spending is above an upper bound of sales orders. • Who are my valuable customers? (Example 2), page 80: Determines valuable customers as those whose average spending is above an upper bound of sales orders. © 2017, MicroStrategy Inc. Functions Reference 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 110). 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, in particular, Count from the ORDER_FACT table. The metric to count the data in the ORDER_FACT table is defined as follows: © 2017, MicroStrategy Inc. 76 Functions Reference 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: 77 © 2017, MicroStrategy Inc. 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] © 2017, MicroStrategy Inc. 78 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 79 • 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. 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 cutoff 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 customer’s 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+} © 2017, MicroStrategy Inc. 80 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] - 81 © 2017, MicroStrategy Inc. 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 © 2017, MicroStrategy Inc. 82 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 83 • 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. 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+} ) {~+} © 2017, MicroStrategy Inc. 84 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, 85 © 2017, MicroStrategy Inc. 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 of © 2017, MicroStrategy Inc. 86 Functions Reference values. For information on these functions, how they forecast values, and forecasting examples using these functions, see: • ForecastV (forecast, vector input), page 271 • GrowthV (growth, vector input), page 272 • TrendV (trend, vector input), page 276 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: 87 © 2017, MicroStrategy Inc. 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, RunningSum<SortBy= ([YEAR_ID])>(WJXBFS1) from [previous pass] © 2017, MicroStrategy Inc. 88 Functions Reference ] 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 where pa11.[CATEGORY_ID] = pa12.[CATEGORY_ID] and pa11.[CATEGORY_ID] = a13.[CATEGORY_ID] 89 © 2017, MicroStrategy Inc. Functions Reference Pass16 - Execution Duration: [Populate Report Data] Pass17 - Execution Duration: drop table ZZT16JMSID1MD000 Pass18 - Execution Duration: drop table ZZT3M2QSNWDMD001 Pass19 - Execution Duration: drop table ZZTDMBESMXPOJ002 Pass20 - Execution Duration: drop table ZZT9MCAB4STOD003 Pass21 - Execution Duration: drop table ZZTMYCAAR65MD004 0:00:00.00 0:00:00.00 0:00:00.00 0:00:00.00 0:00:00.00 0:00:00.00 • 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. © 2017, MicroStrategy Inc. 90 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 92 • Date and time functions, page 116 • Internal functions, page 130 • NULL/Zero functions, page 145 • OLAP functions, page 147 • Rank and NTile functions, page 202 • String functions, page 220 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. 91 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 113), 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 239) 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. 92 © 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 93), 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 197. 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 95. 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. 93 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 22 and Example 2: Compound metric, page 23, as well as Example 1: Average, page 23. 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 ( that returns a list of filters. • To remove the condition from a metric, click the Delete icon ( ). ) to select a filter or a prompt You can also define how the condition is evaluated by clicking Condition advanced options: • 94 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. © 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 96. Example © 2017, MicroStrategy Inc. 95 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. This report also uses two derived metrics to display the following count information: 96 © 2017, MicroStrategy Inc. Functions Reference • 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. 97 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. Example 98 © 2017, MicroStrategy Inc. Functions Reference 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 year’s 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. 99 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 represents the histograms to be analyzed. Example This example shows a report to find the median Revenue per Customer for each Income Bracket in the Central Region. HistogramMedian([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: • 100 Argument is an attribute, fact, or metric representing a list of values. © 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. 101 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 remove a level from a metric, click the Delete icon ( ). ) to select an attribute. You can also define how levels are evaluated: • To define the level options, for each level, click the Level options icon ( Drop-down List From the Relationship with Report Filter drop-down list, you can define how the report 102 ). Level Options To include only data that meets the conditions in the report filter in the metric calculation, select Standard filtering. © 2017, MicroStrategy Inc. Functions Reference Drop-down List filter affects the metric calculation. Level Options 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 Aggregations dropdown list, you can determine how the metric is grouped, or aggregated, when displayed on a report. To group data in the metric by the attribute level of the target, select Standard. To exclude the target attribute from being used to group data in the metric, select None . Any children of the target attribute are also excluded. This option is available for metrics calculated at a set level, as opposed to the 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. 103 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 95. 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: 104 © 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. 105 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 23. 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: 106 • 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 95. © 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. 107 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. 108 © 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 109), 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 239) 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. 109 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 95. 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 111. • When very large population samples are used, this function and the StDev (standard deviation of a sample), page 111 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: 110 © 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 groupvalue 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 95. Expression © 2017, MicroStrategy Inc. 111 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 110. • To perform a weighted standard deviation, see WeightedStDev (weighted standard deviation of a sample), page 199. • When very large population samples are used, this function and the StDevP (standard deviation of a population), page 110 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], ~} 112 © 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 95. 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 revenue for several regions. A report filter limits the regions displayed to Northeast, Northwest, and Southeast. © 2017, MicroStrategy Inc. 113 Functions Reference 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 ( transformation. • To remove a transformation from a metric, click the Delete icon ( ). ) to select a 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: • 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 114 © 2017, MicroStrategy Inc. Functions Reference 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, ~} 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 groupvalue 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 © 2017, MicroStrategy Inc. 115 Functions Reference 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, ~} 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 116 © 2017, MicroStrategy Inc. Functions Reference 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 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 © 2017, MicroStrategy Inc. 117 Functions Reference 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() 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: 118 © 2017, MicroStrategy Inc. Functions Reference 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. • 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. © 2017, MicroStrategy Inc. 119 Functions Reference 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) 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 120 © 2017, MicroStrategy Inc. Functions Reference 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. 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. © 2017, MicroStrategy Inc. 121 Functions Reference 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) 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 122 © 2017, MicroStrategy Inc. Functions Reference 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 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. © 2017, MicroStrategy Inc. 123 Functions Reference 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) 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 124 © 2017, MicroStrategy Inc. Functions Reference 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 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 © 2017, MicroStrategy Inc. 125 Functions Reference 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. 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. 126 © 2017, MicroStrategy Inc. Functions Reference 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. 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. © 2017, MicroStrategy Inc. 127 Functions Reference 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. 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.icuproject.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. 128 © 2017, MicroStrategy Inc. Functions Reference 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. 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 © 2017, MicroStrategy Inc. 129 Functions Reference 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 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: 130 © 2017, MicroStrategy Inc. Functions Reference • • • 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 singlevalue operations at the database level. 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. © 2017, MicroStrategy Inc. 131 Functions Reference 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. • To use # as a character rather than a placeholder, use four # characters in a row. See the syntax below for an example. ApplyComparison(UPPER(#0) like ‘Z####%’, Country@DESC) The SQL for the function is: Select a.11[COUNTRY_ID] AS COUNTRY_ID from [LU_COUNTRY] a11 where upper(a11.[COUNTRY_NAME]) like ‘Z#%’ • Do not use form groups for the attribute form expression when using Apply functions, because form groups are ignored by the Analytical Engine. Instead, use a single form. For example, instead of using Customer@Name, where Name is defined to contain Customer’s first name, middle name, and last name, use ID or any other single form. For more general information on Apply functions as well as an example, see Apply (Passthrough) functions, page 26. 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. 132 © 2017, MicroStrategy Inc. Functions Reference 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. 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 27. 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 © 2017, MicroStrategy Inc. 133 Functions Reference 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 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 form—not 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 134 © 2017, MicroStrategy Inc. Functions Reference Expression type Attribute Examples ApplySimple(“Datediff(YY,#0,getdate())”, [BIRTH_DATE]), in which [BIRTH_DATE] is an attribute ApplySimple(“Months_between(sysdate,#0)”,[CURRENT_DT]), in which [CURRENT_DT] is an attribute Compound Metric ApplySimple(“Greatest(#0,#1,#2)”, Metric_1, Metric_2,Metric_3) ApplySimple(" CASE WHEN #0 between 0 and 100000 THEN 'Low' WHEN #0 between 100001 and 200000 THEN 'Med' ELSE 'High' END ", Sum(Revenue){~}) Examples in custom expressions • ApplySimple("Datediff(YY,#0,getdate())", [BIRTH_DATE]) • ApplySimple("Months_between(sysdate,#0)", [CURRENT_DT]) Examples: Incorrect usage • ApplySimple("Sum(#0)",[Column 1]) • ApplySimple("Count(#0)",[Column 2]) The two examples immediately above are incorrect and should not be used in your application because of the following two reasons: • ApplySimple is a single-value function and therefore can only be used with single-value functions. Sum and Count are both group-value functions and therefore should not be used with ApplySimple. • Sum and Count are both MicroStrategy functions and are not database-specific; therefore, they should not be used with ApplySimple or any other Apply functions. 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 © 2017, MicroStrategy Inc. 135 Functions Reference 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. 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. 136 © 2017, MicroStrategy Inc. 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. Defining © 2017, MicroStrategy Inc. 137 Functions Reference 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. 138 © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 139 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. 140 © 2017, MicroStrategy Inc. 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 Case (Condition1, ReturnValue1, Condition2,ReturnValue2,..., DefaultValue) © 2017, MicroStrategy Inc. 141 Functions Reference 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 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 142 © 2017, MicroStrategy Inc. Functions Reference 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 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) © 2017, MicroStrategy Inc. 143 Functions Reference 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 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. 144 © 2017, MicroStrategy Inc. Functions Reference 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. 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. © 2017, MicroStrategy Inc. 145 Functions Reference 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 222) or ConcatBlank (see ConcatBlank (concatenate plus blank space), page 223). 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 ZeroToNull(Argument) Where Argument is a fact or metric. Example 146 © 2017, MicroStrategy Inc. Functions Reference 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) 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) © 2017, MicroStrategy Inc. 147 Functions Reference 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 • 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. 148 © 2017, MicroStrategy Inc. Functions Reference 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 average Calculation 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. A description of how the MovingAvg metric is used on the report is provided in MovingAvg (moving average), page 160. 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) © 2017, MicroStrategy Inc. 149 Functions Reference 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. 150 © 2017, MicroStrategy Inc. 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 © 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 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 average calculation 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 152 © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 153 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 159). 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. 154 © 2017, MicroStrategy Inc. 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, vector input), © 2017, MicroStrategy Inc. 155 Functions Reference page 271, GrowthV (growth, vector input), page 272, and TrendV (trend, vector input), page 276. Additionally, you can use data mining functions from MicroStrategy Data Mining Services to predict future trends, as described in Data mining functions, page 255. For example, a Last Year’s 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 Year’s 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. 156 © 2017, MicroStrategy Inc. 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: © 2017, MicroStrategy Inc. 157 Functions Reference Only the Month attribute elements Jan 2007, Jan 2008, and Jan 2009 are displayed to show that the Last Year’s 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: • 158 k = row number © 2017, MicroStrategy Inc. 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-byside. 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 154). 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 155. 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. 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. 159 Functions Reference 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. • WindowSize is a positive integer indicating the number of values to use in each calculation. Expression 160 © 2017, MicroStrategy Inc. Functions Reference 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. © 2017, MicroStrategy Inc. 161 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 148. 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: 162 • BreakBy is the attribute indicating where the calculation restarts. • SortBy is the attribute or metric by which the data is sorted. © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 163 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, the 164 © 2017, MicroStrategy Inc. Functions Reference 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 © 2017, MicroStrategy Inc. 165 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: • 166 yi = metric value at the ith row © 2017, MicroStrategy Inc. 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 © 2017, MicroStrategy Inc. 167 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) 168 © 2017, MicroStrategy Inc. 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 © 2017, MicroStrategy Inc. 169 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: • 170 Argument is a metric representing a list of numbers. © 2017, MicroStrategy Inc. Functions Reference • 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. Syntax © 2017, MicroStrategy Inc. 171 Functions Reference OLAPAvg<Distinct, OLAPWinStType, OLAPWinStOffset, OLAPWinEndType, OLAPWinEndOffset, BreakBy, SortBy> (Argument) Where: 172 • 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. • 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. Functions Reference 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. 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. © 2017, MicroStrategy Inc. 173 Functions Reference 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. • 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: ▫ 174 Bottom of data set (1): The calculation stops at the bottom value. The top value is determined by the BreakBy and SortBy values. © 2017, MicroStrategy Inc. Functions Reference ▫ 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. © 2017, MicroStrategy Inc. 175 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. Syntax 176 © 2017, MicroStrategy Inc. Functions Reference 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. The function is not valid if your starting point is at a lower point than your ending point. Example © 2017, MicroStrategy Inc. 177 Functions Reference 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 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. 178 © 2017, MicroStrategy Inc. Functions Reference 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). • 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. © 2017, MicroStrategy Inc. 179 Functions Reference ▫ 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. 180 © 2017, MicroStrategy Inc. 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: © 2017, MicroStrategy Inc. 181 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. 182 © 2017, MicroStrategy Inc. 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) © 2017, MicroStrategy Inc. 183 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. The function is not valid if your starting point is at a lower point than your ending point. 184 © 2017, MicroStrategy Inc. Functions Reference 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 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. © 2017, MicroStrategy Inc. 185 Functions Reference 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 Example 186 © 2017, MicroStrategy Inc. Functions Reference 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 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 © 2017, MicroStrategy Inc. 187 Functions Reference 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: 188 • yi = metric value at the ith row • n = number of rows/metric values © 2017, MicroStrategy Inc. Functions Reference 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 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. © 2017, MicroStrategy Inc. 189 Functions Reference 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 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. 190 © 2017, MicroStrategy Inc. Functions Reference 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 © 2017, MicroStrategy Inc. 191 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 192 © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 193 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 271. 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 194 © 2017, MicroStrategy Inc. 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 employee’s 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: Correlation([Avg. Performance Score], [Avg. Satisfaction Score]) {Level , ~ } • Weighted Correlation: © 2017, MicroStrategy Inc. 195 Functions Reference 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 employee’s 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 271. 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. • = average value of x • = average value of y Usage notes The following are invalid conditions: 196 © 2017, MicroStrategy Inc. Functions Reference • 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 employee’s 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 employee’s tenure into the covariance calculation. This means that more significance is given to covariance comparisons for employees that 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. © 2017, MicroStrategy Inc. 197 Functions Reference 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 93. 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} The weighted mean takes into account the weights of each revenue value. For example, since Central’s percent growth is greater than Northwest’s percent growth, and the weight in this example is the percent growth, Central’s revenue is given more significance in the 198 © 2017, MicroStrategy Inc. Functions Reference 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 111). 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 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 © 2017, MicroStrategy Inc. 199 Functions Reference 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 110. 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] , ~ } 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: 200 © 2017, MicroStrategy Inc. Functions Reference The weighted standard deviation also takes into account the weights of each revenue value. For example, since Connecticut’s revenue is greater than Maine’s revenue, and the weight in this example is the revenue value, Connecticut’s 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. © 2017, MicroStrategy Inc. 201 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, 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: 202 • 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. © 2017, MicroStrategy Inc. Functions Reference • 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. © 2017, MicroStrategy Inc. 203 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: 204 • 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. 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. © 2017, MicroStrategy Inc. 205 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. 206 © 2017, MicroStrategy Inc. 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 Platfo rm Capabilities\Advanced Analytics\Statistics and Forecasting\Hist ogram 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 Server. © 2017, MicroStrategy Inc. 207 Functions Reference 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 208 Create a metric defined as follows: © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 209 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: 210 © 2017, MicroStrategy Inc. 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. © 2017, MicroStrategy Inc. 211 Functions Reference NTileValueSize NTileValueSize distributes the values in the metric across buckets based on a userspecified 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. 212 © 2017, MicroStrategy Inc. 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. 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 © 2017, MicroStrategy Inc. 213 Functions Reference 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 217) 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 215) 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 year’s 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: ▫ 214 TRUE (default): The percent rank is in a range from 0 to 1 inclusive. This means that 0% and 100% are included. © 2017, MicroStrategy Inc. Functions Reference ▫ • 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 quarter’s revenue. For information on PercentRankRelative and an explanation of these results, see PercentRankRelative, page 215. 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 year’s 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 217) ranks values as an integer value. For example, you can rank profit for five categories from 1 to 5. • The PercentRank function (see PercentRank , page 214) 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 © 2017, MicroStrategy Inc. 215 Functions Reference 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 year’s profit to rank this year’s 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. 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 quarter’s revenue. The definition for the Percent Rank Revenue metric in this example is: 216 © 2017, MicroStrategy Inc. Functions Reference PercentRankRelative<BreakBy={Quarter}>(Revenue, [Last Quarter’s 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 quarter’s 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 214. 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. Syntax Rank <ASC, ByValue, BreakBy, NullInclude> (Argument) Where: • Argument is a fact or metric representing a list numbers. © 2017, MicroStrategy Inc. 217 Functions Reference • 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. ▫ 218 -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. © 2017, MicroStrategy Inc. Functions Reference 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 System Administration Guide : — 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. 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). © 2017, MicroStrategy Inc. 219 Functions Reference 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. 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. 220 © 2017, MicroStrategy Inc. Functions Reference 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 243. 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. 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. © 2017, MicroStrategy Inc. 221 Functions Reference 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 223 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 224. 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 separated by a comma. You can define the delimiter. Syntax ConcatAgg<Delimiter, FactID, UseLookupForAttributes> (Argument) Where: • 222 Argument is facts, metrics, columns, or string values. © 2017, MicroStrategy Inc. Functions Reference • 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 95. 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. 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. © 2017, MicroStrategy Inc. 223 Functions Reference For an additional example of using the ConcatBlank function, see the example section for the function InitCap (initial capitalization), page 224. 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 244. 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 234. Syntax InitCap(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 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: 224 © 2017, MicroStrategy Inc. Functions Reference 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 someone’s first name with the person’s 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 229. Syntax LastPosition (Argument1, Argument2) Where: • Argument1 is the string in which to search for Argument2. • 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. © 2017, MicroStrategy Inc. 225 Functions Reference 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 224. 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) 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 226 © 2017, MicroStrategy Inc. Functions Reference 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 database’s 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 267. 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 create an attribute form to display all characters for a customer’s 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”. © 2017, MicroStrategy Inc. 227 Functions Reference 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 236). 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: 228 • 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. © 2017, MicroStrategy Inc. Functions Reference • 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-5556789", "(\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+)") 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 225. 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) © 2017, MicroStrategy Inc. 229 Functions Reference 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. • 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: 230 © 2017, MicroStrategy Inc. Functions Reference • 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. 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. © 2017, MicroStrategy Inc. 231 Functions Reference 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]) 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 236). 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: 232 • 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. © 2017, MicroStrategy Inc. Functions Reference 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.icuproject.org/strings/regexp. Example • Split<SeparatorRegex=True>("red yellow green", "\s", 2) 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. © 2017, MicroStrategy Inc. 233 Functions Reference • 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 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 nonalphabetic 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 224. 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. 234 © 2017, MicroStrategy Inc. Functions Reference 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. 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". © 2017, MicroStrategy Inc. 235 Functions Reference 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 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 customer’s address in upper case. The definition of such an attribute form is shown below: Upper([ADDRESS]) 236 © 2017, MicroStrategy Inc. Functions Reference 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. © 2017, MicroStrategy Inc. 237 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 238 • Comparison operators, page 240 • Comparison for rank operators, page 248 • Logical operators, page 252 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. 238 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 Where: 239 © 2017, MicroStrategy Inc. Functions Reference 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: 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. © 2017, MicroStrategy Inc. 240 Functions Reference 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. Equal (=) Returns TRUE if the two given values are equal to each other. Syntax 241 © 2017, MicroStrategy Inc. Functions Reference 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: 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 © 2017, MicroStrategy Inc. 242 Functions Reference 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 221. 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" • date@DESC Between '1999-2-12' and '2005-2-23' Contains Returns TRUE if a text string contains a specified text pattern. Syntax 243 © 2017, MicroStrategy Inc. Functions Reference 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 224. 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 • 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. © 2017, MicroStrategy Inc. 244 Functions Reference 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 database’s 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: • • 245 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'. ▫ 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 © 2017, MicroStrategy Inc. Functions Reference 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. Not between Returns TRUE if a specified value does not lie in between two given boundaries. Syntax Value Not Between Boundary1 and Boundary2 Where: © 2017, MicroStrategy Inc. 246 Functions Reference 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. 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. 247 © 2017, MicroStrategy Inc. Functions Reference 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 248 • Not equal enhanced (*<>), page 249 • Equal enhanced (*=), page 249 • Greater than or equal enhanced (*>=), page 250 • Between enhanced (*Between), page 250 • Not between enhanced (Not *Between), page 251 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. © 2017, MicroStrategy Inc. 248 Functions Reference 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. 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 249 © 2017, MicroStrategy Inc. Functions Reference 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. 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 © 2017, MicroStrategy Inc. 250 Functions Reference *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 • 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. 251 © 2017, MicroStrategy Inc. Functions Reference 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. • 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) © 2017, MicroStrategy Inc. 252 Functions Reference 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) This condition returns FALSE only if the Cost is greater than 1000, and the Freight is greater than 500. 253 © 2017, MicroStrategy Inc. 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 67. 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 255 • Financial functions, page 257 • Mathematical functions, page 267 • Statistical functions, page 270 © 2017, MicroStrategy Inc. 254 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 on the MicroStrategy GitHub site. The third-party R environment is freely available, as a separate download, from CRAN-R. Once you have downloaded and configured the R Integration Pack, there are several functions available in MicroStrategy 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. 255 • 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. © 2017, MicroStrategy Inc. Functions Reference • 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 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 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. _CheckInputCount: Controls whether MicroStrategy ensures that the number of inputs to the metric exactly matches exactly the number of inputs specified in the function’s 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. © 2017, MicroStrategy Inc. 256 Functions Reference • _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) (missing or bad snippet) 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 257 • 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. 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) {~+} Accrintm (accrued interest at maturity) (missing or bad snippet) 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 © 2017, MicroStrategy Inc. 258 Functions Reference 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) (missing or bad snippet) 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) (missing or bad snippet) 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) (missing or bad snippet) Usage notes • If an argument is not an integer, it is truncated. • The engine returns an empty cell if ▫ 259 Settlement or Maturity is not a valid date. © 2017, MicroStrategy Inc. Functions Reference • ▫ 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. Coupncd (next date after settlement) (missing or bad snippet) 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. Coupnum (coupon, number payable between settlement and maturity) (missing or bad snippet) 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) (missing or bad snippet) 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. © 2017, MicroStrategy Inc. 260 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. Cumipmt (cumulative interest paid) (missing or bad snippet) Cumprinc (cumulative principal paid) (missing or bad snippet) Db (fixed-declining balance (asset depreciation)) (missing or bad snippet) Ddb (double-declining balance (asset depreciation)) (missing or bad snippet) Disc (discount rate for a security) (missing or bad snippet) 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) (missing or bad snippet) Dollarfr (dollar price, converted from decimal to fraction) (missing or bad snippet) Duration (missing or bad snippet) 261 © 2017, MicroStrategy Inc. Functions Reference Effect (effective annual interest rate) (missing or bad snippet) ▫ Npery <= 1. Fv (future value) (missing or bad snippet) Fvschedule (future value schedule) (missing or bad snippet) 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) (missing or bad snippet) 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. Ipmt (interest payment) (missing or bad snippet) IRR (internal rate of return) (missing or bad snippet) Mduration (modified duration) (missing or bad snippet) MIRR (modified internal rate of return) (missing or bad snippet) Nominal (nominal annual interest rate) (missing or bad snippet) © 2017, MicroStrategy Inc. 262 Functions Reference Nper (number of investment periods) (missing or bad snippet) NPV (net present value of an investment) (missing or bad snippet) Oddfprice (odd-first-period price) (missing or bad snippet) 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: • 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: 263 • 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 © 2017, MicroStrategy Inc. Functions Reference • 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. Oddfyield (odd-first-period yield) (missing or bad snippet) Oddlprice (odd-last-period price) (missing or bad snippet) Oddlyield (odd-last-period yield) (missing or bad snippet) Pmt (payment) (missing or bad snippet) Ppmt (principal payment) (missing or bad snippet) Price (price per $100 face value) (missing or bad snippet) Pricedisc (price, discounted) (missing or bad snippet) 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: © 2017, MicroStrategy Inc. 264 Functions Reference • ▫ 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. Pricemat (price at maturity) (missing or bad snippet) 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. 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) (missing or bad snippet) Rate (interest rate per period) Returns the interest rate per period on a given annuity. Syntax 265 © 2017, MicroStrategy Inc. Functions Reference 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. • 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) (missing or bad snippet) 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) (missing or bad snippet) © 2017, MicroStrategy Inc. 266 Functions Reference Syd (sum of year’s digits depreciation) (missing or bad snippet) Tbilleq (T-bill equity) (missing or bad snippet) Tbillprice (T-bill price) (missing or bad snippet) Tbillyield (T-bill yield) (missing or bad snippet) Vdb (variable declining balance) (missing or bad snippet) XIRR (internal rate of return for payments at irregular intervals) (missing or bad snippet) XNPV (net present value of an investment for payments or incomes at irregular intervals) (missing or bad snippet) Yield (missing or bad snippet) Yielddisc (yield on a discounted security) (missing or bad snippet) Yieldmat (yield at maturity) (missing or bad snippet) 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) (missing or bad snippet) 267 © 2017, MicroStrategy Inc. Functions Reference Acos (arc cosine) (missing or bad snippet) Acosh (arc cosine, hyperbolic) (missing or bad snippet) Asin (arc sine) (missing or bad snippet) Asinh (arc sine, hyperbolic) (missing or bad snippet) Atan (arc tangent) (missing or bad snippet) Atan2 (arc tangent 2) (missing or bad snippet) Atanh (arc tangent, hyperbolic) (missing or bad snippet) Ceiling (ceiling value) (missing or bad snippet) Combine (combination) (missing or bad snippet) Cos (cosine) (missing or bad snippet) Cosh (cosine, hyperbolic) (missing or bad snippet) 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 © 2017, MicroStrategy Inc. 268 Functions Reference 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) (missing or bad snippet) Factorial (factorial) (missing or bad snippet) Floor (floor value) (missing or bad snippet) Int (integer) (missing or bad snippet) Ln (logarithm, natural) (missing or bad snippet) Log (logarithm) (missing or bad snippet) Log10 (logarithm, base 10) (missing or bad snippet) Mod (modulus) (missing or bad snippet) Power (missing or bad snippet) Quotient (missing or bad snippet) Radians (conversion to) (missing or bad snippet) Randbetween (random number between two values) (missing or bad snippet) 269 © 2017, MicroStrategy Inc. Functions Reference Round (round to nearest integer) (missing or bad snippet) Round2 (round to specified precision) (missing or bad snippet) Sin (sine) (missing or bad snippet) Sinh (sine, hyperbolic) (missing or bad snippet) Sqrt (square root) (missing or bad snippet) Tan (tangent) (missing or bad snippet) 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) (missing or bad snippet) 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) (missing or bad snippet) BetaDistribution (missing or bad snippet) © 2017, MicroStrategy Inc. 270 Functions Reference BinomialDistribution (missing or bad snippet) ChiSquareDistribution (missing or bad snippet) ChiSquareTest (chi-square test for goodness of fit) Confidence (confidence interval) (missing or bad snippet) Correlation (missing or bad snippet) Covariance (missing or bad snippet) CritBinomial (criterion binomial) (missing or bad snippet) ExponentialDistribution (missing or bad snippet) Fisher (fisher transformation) (missing or bad snippet) FDistribution (f-probability distribution) (missing or bad snippet) Forecast (missing or bad snippet) ForecastV (forecast, vector input) (missing or bad snippet) FTest (missing or bad snippet) 271 © 2017, MicroStrategy Inc. Functions Reference 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 ▫ (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) H1: Syntax FTest <Hypothesis type, Ratio> (Argument1, Argument2) Usage notes The following are invalid conditions: • Argument1 and Argument2 contain a different number of data points. • The variance of either data set is zero. GammaDistribution (missing or bad snippet) Growth (missing or bad snippet) GrowthV (growth, vector input) (missing or bad snippet) HeteroscedasticTTest and HomoscedasticTTest (missing or bad snippet) Definition P-value = Pr[Reject H0 | H0 is correct] © 2017, MicroStrategy Inc. 272 Functions Reference 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 : ▫ (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 70. HypergeometricDistribution (missing or bad snippet) Intercept (missing or bad snippet) InverseBetaDistribution (inverse of the beta distribution) (missing or bad snippet) 273 © 2017, MicroStrategy Inc. Functions Reference InverseChiDistribution (inverse of chi-squared distribution) (missing or bad snippet) InverseFisher (inverse of the Fisher transformation) (missing or bad snippet) InverseFDistribution (inverse of F-probability distribution) (missing or bad snippet) InverseGammaDistribution (inverse of gamma distribution) (missing or bad snippet) InverseLognormalDistribution (inverse of lognormal distribution) (missing or bad snippet) InverseNormDistribution (inverse of normal cumulative distribution) (missing or bad snippet) InverseNormSDistribution (inverse of standard normal cumulative distribution) (missing or bad snippet) InverseTDistribution (inverse of T-distribution) (missing or bad snippet) Kurtosis (missing or bad snippet) LognormalDistribution (missing or bad snippet) MeanTTest (mean T-test) (missing or bad snippet) Definition P-value = Pr[Reject H0 | H0 is correct] © 2017, MicroStrategy Inc. 274 Functions Reference 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 (missing or bad snippet) NormalDistribution (normal cumulative distribution) (missing or bad snippet) PairedTTest (paired T-test, two-sample for means) (missing or bad snippet) Pearson (Pearson product moment correlation coefficient) (missing or bad snippet) Permut (permutation) (missing or bad snippet) PoissonDistribution (missing or bad snippet) 275 © 2017, MicroStrategy Inc. Functions Reference RSquare (square of pearson product moment correlation coefficient) (missing or bad snippet) Skew (missing or bad snippet) Slope (of a linear regression) (missing or bad snippet) Standardize (missing or bad snippet) StandardNormalDistribution (standard normal cumulative distribution) (missing or bad snippet) SteYX (standard error of estimates) (missing or bad snippet) TDistribution (missing or bad snippet) Trend (missing or bad snippet) TrendV (trend, vector input) (missing or bad snippet) VarTest (variance test) Returns the P-value of a test that tests the variance of the data against a particular value. (missing or bad snippet) WeibullDistribution (missing or bad snippet) © 2017, MicroStrategy Inc. 276 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 277 • Databases that a function can be evaluated on, page 281 For additional information on how functions are processed, see Types of function processing, page 55. 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 Basic functions Functions supported by the MicroStrategy Analytical Engine • Add • Average • Avg • Count • First • GeoMean © 2017, MicroStrategy Inc. 277 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 278 © 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. 279 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 280 © 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 277). 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 282 • Aster Database, page 292 • Calpont InfiniDB, page 306 • EXASolution, page 316 • Greenplum, page 322 • Hadoop Hive, page 327 • HP Vertica, page 330 • IBM DB2, page 340 • IBM Informix, page 375 • IBM Netezza, page 387 • IBM Red Brick, page 406 • Infobright, page 410 • Kognitio, page 415 • Maria DB, page 419 © 2017, MicroStrategy Inc. 281 Functions Reference • Microsoft Access, page 424 • Microsoft SQL Server, page 432 • MySQL, page 461 • Oracle, page 466 • Actian Matrix, page 494 • PostgreSQL, page 509 • Salesforce.com, page 519 • SAND CDBMS, page 523 • SAP HANA 1.x, page 532 • Sybase, page 541 • Teradata, page 565 Actian Vectorwise The tables listed below describe the MicroStrategy function support for Actian Vectorwise databases: • Actian Vectorwise 2.5, page 282 • Actian Vectorwise 3.0, page 287 Actian Vectorwise 2.5 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev 282 © 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. 283 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 284 © 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. 285 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 286 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 287 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 288 © 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. 289 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 290 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. • Correlation 291 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 292 • Databases that a function can be evaluated on, page 281 • Aster Database 5.1.x, page 301 Aster Database 4.6.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Stdev • StdevP • Sum • Var • VarP 292 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 293 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 294 © 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. 295 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 296 Function type Functions that can be evaluated on the database Basic functions • Add © 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. 297 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 298 © 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. 299 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 300 Data mining functions None Financial functions None © 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 Basic functions © 2017, MicroStrategy Inc. Functions that can be evaluated on the database • Add 301 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 302 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 303 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 304 © 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. 305 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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: 306 • Calpont InfiniDB 2.2.x, page 307 • Calpont InfiniDB 3.x, page 312 © 2017, MicroStrategy Inc. Functions Reference Calpont InfiniDB 2.2.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 307 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 308 © 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. 309 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 310 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. None 311 Functions Reference Calpont InfiniDB 3.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 312 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 313 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 314 © 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. 315 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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: • 316 EXASolution 4.x, page 317 © 2017, MicroStrategy Inc. Functions Reference EXASolution 4.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Median • Min • Multiply • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 317 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 318 © 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. 319 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 320 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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. 321 Functions Reference Greenplum The tables listed below describe the MicroStrategy function support for Greenplum databases: • Greenplum 4.x, page 322 Greenplum 4.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 322 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 323 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 324 © 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. 325 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 326 © 2017, MicroStrategy Inc. Functions Reference Hadoop Hive The tables listed below describe the MicroStrategy function support for Hadoop Hive databases: • Hadoop Hive, page 327 Hadoop Hive Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Min • Multiply • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 327 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 328 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 329 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: 330 © 2017, MicroStrategy Inc. Functions Reference • HP Vertica 5.1 , page 331 • HP Vertica 6.x , page 336 HP Vertica 5.1 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 331 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 332 © 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. 333 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 334 © 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 © 2017, MicroStrategy Inc. • Standardize 335 Functions Reference HP Vertica 6.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 336 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 337 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 338 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 339 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: 340 • DB2 V9.5 for Linux, UNIX, and Windows, page 341 • DB2 V9.7 for Linux, UNIX, and Windows, page 347 © 2017, MicroStrategy Inc. Functions Reference • DB2 V10.1 for Linux, UNIX, and Windows, page 353 • DB2 V10.5 for Linux, UNIX, and Windows, page 359 • DB2 for i 6.1, page 365 • DB2 for i 7.1, page 370 DB2 V9.5 for Linux, UNIX, and Windows Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 341 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 342 © 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. 343 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 344 © 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. 345 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 346 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 347 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 348 © 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. 349 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 350 © 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. 351 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 352 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 353 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 354 © 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. 355 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 356 © 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. 357 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 358 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 359 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 360 © 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. 361 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 362 © 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. 363 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 364 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 365 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 366 OLAP functions None Rank and NTile functions • Rank String functions • Concat © 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. 367 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 368 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. None 369 Functions Reference DB2 for i 7.1 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 370 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 371 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 372 © 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. 373 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 374 None © 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 375 • IBM Informix Ultimate Edition 12.1, page 379 • IBM Informix XPS 8.x, page 383 IBM Informix IDS 11.5 and Informix Ultimate Edition 11.7 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • Max • Min • Multiply • Stdev • Sum • Var © 2017, MicroStrategy Inc. 375 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 376 © 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. 377 Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or 378 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • Max • Min © 2017, MicroStrategy Inc. 379 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 380 © 2017, MicroStrategy Inc. Functions Reference Function type OLAP functions Functions that can be evaluated on the database • 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. 381 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 382 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • Max • Min © 2017, MicroStrategy Inc. 383 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 384 © 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. 385 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 386 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 388 • IBM Netezza 6.0.x, page 394 • IBM Netezza 7.0.x, page 400 © 2017, MicroStrategy Inc. 387 Functions Reference IBM Netezza 5.0.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 388 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 389 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 390 © 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. 391 Functions Reference Function type Functions that can be evaluated on the database • Or 392 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. • Correlation 393 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 394 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 395 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 396 © 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. 397 Functions Reference Function type Functions that can be evaluated on the database • Or 398 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. • Correlation 399 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 400 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 401 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 402 © 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. 403 Functions Reference Function type Functions that can be evaluated on the database • Or 404 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. • Correlation 405 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 406 IBM Red Brick 6.3 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • Max • Min • Multiply • Sum 406 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 407 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- 408 © 2017, MicroStrategy Inc. Functions Reference Function type Comparison operators 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. 409 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 410 Infobright 4.0.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product 410 © 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 • Minute • Month • MonthEndDate • MonthsBetween • MonthStartDate • Quarter • Second • Week • Year • YearEndDate • YearStartDate Internal functions • Banding • BandingC • Coalesce © 2017, MicroStrategy Inc. 411 Functions Reference Function type Null and Zero functions Functions that can be evaluated on the database • 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 412 © 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. 413 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 414 None © 2017, MicroStrategy Inc. Functions Reference Kognitio The tables listed below describe the MicroStrategy function support for Kognitio databases: • Kognitio WX2 7.x, page 415 Kognitio WX2 7.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Min • Multiply • StdevP • Sum • VarP © 2017, MicroStrategy Inc. 415 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 416 © 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. 417 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 418 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 420 © 2017, MicroStrategy Inc. 419 Functions Reference Maria DB 5.5.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 420 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 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 Mathematical functions Functions that can be evaluated on the database • 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: • 424 Microsoft Access 2000, 2002, or 2003, page 425 © 2017, MicroStrategy Inc. Functions Reference • Microsoft Access 2007, page 428 Microsoft Access 2000, 2002, or 2003 Microsoft Access 2000, 2002, or 2003 are only supported for demonstration purposes. Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • Max • Min • Multiply • Sum © 2017, MicroStrategy Inc. 425 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 426 © 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. 427 Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply 428 © 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. 429 Functions Reference Function type Null and Zero functions Functions that can be evaluated on the database • 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 430 © 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. 431 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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: 432 • Microsoft SQL Server 2005, page 433 • Microsoft SQL Server 2008, page 438 • Microsoft SQL Server 2008 R2 Parallel Data Warehouse, page 443 • Microsoft SQL Server 2012, page 447 • Microsoft SQL Server 2012 Parallel Data Warehouse, page 452 • Microsoft SQL Database, page 457 © 2017, MicroStrategy Inc. Functions Reference Microsoft SQL Server 2005 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 433 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 434 OLAP functions • OLAPRank Rank and NTile functions • Rank String functions • Concat © 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. 435 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 436 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 © 2017, MicroStrategy Inc. None 437 Functions Reference Microsoft SQL Server 2008 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Stdev • StdevP • Sum • Var • VarP 438 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 439 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 440 © 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. 441 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 442 None © 2017, MicroStrategy Inc. Functions Reference Microsoft SQL Server 2008 R2 Parallel Data Warehouse Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 443 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 444 © 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. 445 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 446 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count © 2017, MicroStrategy Inc. 447 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 448 • Banding © 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. 449 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 450 © 2017, MicroStrategy Inc. Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or Data mining functions None Financial functions None © 2017, MicroStrategy Inc. 451 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average 452 © 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. 453 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 454 © 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. 455 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 456 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count © 2017, MicroStrategy Inc. 457 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 458 • Banding © 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. 459 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 460 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 462 © 2017, MicroStrategy Inc. 461 Functions Reference MySQL 5.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 462 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 463 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 464 © 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. 465 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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: • 466 Oracle 10g, page 467 © 2017, MicroStrategy Inc. Functions Reference • Oracle 10gR2, page 472 • Oracle 11g, page 478 • Oracle 11g R2, page 483 • Oracle 12c, page 489 Oracle 10g Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Median • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 467 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 468 © 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. 469 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 470 © 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. 471 Functions Reference Function type Statistical functions Functions that can be evaluated on the database • Correlation • Covariance • Fisher • Intercept • InverseFisher • Kurtosis • Pearson • RSquare • Skew • Slope • Standardize • SteYX Oracle 10gR2 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Median • Min • Multiply • Product • Stdev • StdevP • Sum 472 © 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. 473 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 474 © 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. 475 Functions Reference Function type Functions that can be evaluated on the database • Not • Or 476 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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. 477 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Median • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 478 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 479 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 480 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 481 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 482 © 2017, MicroStrategy Inc. Functions Reference Function type Statistical functions Functions that can be evaluated on the database • Correlation • Covariance • Fisher • Intercept • InverseFisher • Kurtosis • Pearson • RSquare • Skew • Slope • Standardize • SteYX Oracle 11g R2 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Median • Min • Multiply • Product • Stdev • StdevP • Sum © 2017, MicroStrategy Inc. 483 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 484 © 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. 485 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 486 © 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. 487 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 488 © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • First • GeoMean • Greatest • Last • Least • Max • Median • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 489 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 490 © 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. 491 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 492 © 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. 493 Functions Reference Function type Statistical functions Functions that can be evaluated on the database • 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 494 • Actian Matrix 3.5.x, page 499 • Actian Matrix 4.0.x, page 504 Actian Matrix 3.1.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min 494 © 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 © 2017, MicroStrategy Inc. • FirstInRange 495 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 496 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 497 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 498 © 2017, MicroStrategy Inc. Functions Reference Function type Statistical functions Functions that can be evaluated on the database • Covariance • Fisher • Intercept • InverseFisher • Kurtosis • RSquare • Slope • Standardize Actian Matrix 3.5.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Sum • Stdev • StdevP • Var • VarP © 2017, MicroStrategy Inc. 499 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 500 © 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. • < 501 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 502 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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. 503 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 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 • 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. 505 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 506 • < © 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. 507 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 508 © 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 509 • PostgreSQL 9.x, page 514 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. 509 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 510 None © 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. 511 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 512 Data mining functions None Financial functions None © 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. 513 Functions Reference PostgreSQL 9.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 514 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 515 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 516 © 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. 517 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 518 © 2017, MicroStrategy Inc. Functions Reference Salesforce.com The tables listed below describe the MicroStrategy function support for Salesforce.com data sources: • Salesforce.com, page 519 Salesforce.com Function type Basic functions Functions that can be evaluated on the database • 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. 519 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 520 © 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. 521 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 522 • Standardize © 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 523 • SAND CDBMS 7.1, page 527 SAND CDBMS 6.1 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Median • Min • Multiply • Product • Stdev • Sum • Var © 2017, MicroStrategy Inc. 523 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 524 © 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. 525 Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or 526 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions © 2017, MicroStrategy Inc. Functions that can be evaluated on the database • Add 527 Functions Reference Function type Functions that can be evaluated on the database • Average • Avg • Count • GeoMean • Max • Median • Min • Multiply • Product • Stdev • Sum • Var 528 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 529 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 530 © 2017, MicroStrategy Inc. Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or Data mining functions None Financial functions None © 2017, MicroStrategy Inc. 531 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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: 532 • SAP HANA 1.0 SP4 , page 533 • SAP HANA 1.0 SP5 , page 537 © 2017, MicroStrategy Inc. Functions Reference SAP HANA 1.0 SP4 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Stdev • Sum • Var © 2017, MicroStrategy Inc. 533 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 534 OLAP functions None Rank and NTile functions None String functions None © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 535 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 536 None © 2017, MicroStrategy Inc. Functions Reference SAP HANA 1.0 SP5 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Stdev • Sum • Var © 2017, MicroStrategy Inc. 537 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 538 Rank and NTile functions None String functions None © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 539 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 540 None © 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 541 • SAP Sybase IQ 15.2, page 545 • SAP Sybase IQ 15.3, page 550 • SAP Sybase IQ 15.4, page 555 • SAP Sybase IQ 16.0, page 560 SAP Sybase ASE 15.x Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • Max • Min • Multiply • Sum © 2017, MicroStrategy Inc. 541 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 542 © 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. 543 Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or 544 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean © 2017, MicroStrategy Inc. 545 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 546 © 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. 547 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 548 © 2017, MicroStrategy Inc. Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or Data mining functions None Financial functions None © 2017, MicroStrategy Inc. 549 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count 550 © 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 © 2017, MicroStrategy Inc. • Banding 551 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 552 © 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. 553 Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or 554 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count © 2017, MicroStrategy Inc. 555 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 556 • Banding © 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. 557 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 558 © 2017, MicroStrategy Inc. Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or Data mining functions None Financial functions None © 2017, MicroStrategy Inc. 559 Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count 560 © 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 © 2017, MicroStrategy Inc. • Banding 561 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 562 © 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. 563 Functions Reference Function type Comparison operators for rank Functions that can be evaluated on the database • *<= • *<> • *= • *>= • *Between • Not*Between Logical operators • AND • IF • Not • Or 564 Data mining functions None Financial functions None © 2017, MicroStrategy Inc. Functions Reference Function type Mathematical functions Functions that can be evaluated on the database • 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 566 • Teradata 13, page 571 • Teradata 13.10, page 576 • Teradata 14.0, page 581 • Teradata 14.10, page 586 © 2017, MicroStrategy Inc. 565 Functions Reference Teradata 12 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 566 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 567 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 568 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 569 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 570 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 571 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 572 © 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. 573 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 574 © 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 © 2017, MicroStrategy Inc. • Correlation 575 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 576 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 577 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 578 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 • Sin • Sinh • Sqrt • Tan • Tanh • Trunc Statistical functions 580 • Correlation © 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 Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP © 2017, MicroStrategy Inc. 581 Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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 582 © 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. 583 Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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 584 © 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. 585 Functions Reference Function type Statistical functions Functions that can be evaluated on the database • Correlation • Covariance • Fisher • Intercept • InverseFisher • Kurtosis • Pearson • RSquare • Skew • Slope • Standardize • SteYX Teradata 14.10 Function type Basic functions Functions that can be evaluated on the database • Add • Average • Avg • Count • GeoMean • Greatest • Least • Max • Min • Multiply • Product • Stdev • StdevP • Sum • Var • VarP 586 © 2017, MicroStrategy Inc. Functions Reference Function type Date and time functions Functions that can be evaluated on the database • 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. 587 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 588 © 2017, MicroStrategy Inc. Functions Reference Function type Arithmetic operators Functions that can be evaluated on the database • • 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. 589 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 590 © 2017, MicroStrategy Inc. Functions Reference Function type Statistical functions Functions that can be evaluated on the database • Correlation • Covariance • Fisher • Intercept • InverseFisher • Kurtosis • Pearson • RSquare • Skew • Slope • Standardize • SteYX © 2017, MicroStrategy Inc. 591 1 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. 592 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 objects are defined based on attributes and facts (objects in the logical data model.) 593 © 2017, MicroStrategy Inc. Functions Reference 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. 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 © 2017, MicroStrategy Inc. 594 Functions Reference 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 document’s or dataset’s 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 axes—Row, Column, and Page. When a user defines a template for a report, he places template units— attributes, dimensions, metrics, consolidations, and custom groups—along 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. B 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. base table A fact table that stores data at the lowest level of dimensionality. 595 © 2017, MicroStrategy Inc. Functions Reference 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. C 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. 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. © 2017, MicroStrategy Inc. 596 Functions Reference 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. 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. 597 © 2017, MicroStrategy Inc. Functions Reference 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 document’s 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. D 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 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. © 2017, MicroStrategy Inc. 598 Functions Reference 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 document’s 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. 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. 599 © 2017, MicroStrategy Inc. Functions Reference 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 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 Date–Birth Date]. See also: attribute. © 2017, MicroStrategy Inc. 600 Functions Reference 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 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. 601 © 2017, MicroStrategy Inc. Functions Reference 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. 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. © 2017, MicroStrategy Inc. 602 Functions Reference 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. dossier An interactive, visually intuitive display of data. A dossier can summarize key business indicators (KPIs) to provide a status check. Users can change how they view the dossier'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. 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. E 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. 603 © 2017, MicroStrategy Inc. Functions Reference 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. F 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 numbers—usually prices, or sales in dollars, or inventory quantities in counts. See also: metric. © 2017, MicroStrategy Inc. 604 Functions Reference 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 Excel’s 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. 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. 605 © 2017, MicroStrategy Inc. Functions Reference G 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. grouping A way to create a hierarchical structure for a document. H hierarchy A set of attributes defining a meaningful path for element browsing or drilling. The order of the attributes is typically—though not always—defined 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 © 2017, MicroStrategy Inc. 606 Functions Reference 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. I 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. 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 607 © 2017, MicroStrategy Inc. Functions Reference 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 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. © 2017, MicroStrategy Inc. 608 Functions Reference 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. J 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. K 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. L 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 609 © 2017, MicroStrategy Inc. Functions Reference 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 fourtier 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. 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. M 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. © 2017, MicroStrategy Inc. 610 Functions Reference 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. 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 serverto-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. 611 © 2017, MicroStrategy Inc. Functions Reference 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 module’s packaged data warehouse schema; and a reference guide for the Analysis Module’s 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. 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, © 2017, MicroStrategy Inc. 612 Functions Reference 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. N 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. 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. O 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). 613 © 2017, MicroStrategy Inc. Functions Reference 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. 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. P 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. © 2017, MicroStrategy Inc. 614 Functions Reference 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. 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, 615 © 2017, MicroStrategy Inc. Functions Reference 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. 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 © 2017, MicroStrategy Inc. 616 Functions Reference 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. 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. 617 © 2017, MicroStrategy Inc. Functions Reference 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. 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. Q qualification The actual condition that must be met for data to be included on a report. Examples include “Region = Northeast” or “Revenue > $1 million”. Qualifications are used in filters and custom groups. You can create multiple qualifications for a single filter or © 2017, MicroStrategy Inc. 618 Functions Reference 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 user’s preferences. Answers are used as preference objects. For a 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 Excel’s AutoFormats. R 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 619 © 2017, MicroStrategy Inc. Functions Reference 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. 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). S 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. © 2017, MicroStrategy Inc. 620 Functions Reference 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 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. 621 © 2017, MicroStrategy Inc. Functions Reference 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 (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 schedulesubscription pair and a set of publications. © 2017, MicroStrategy Inc. 622 Functions Reference 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 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. 623 © 2017, MicroStrategy Inc. Functions Reference 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 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 passwordcontrolled 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. © 2017, MicroStrategy Inc. 624 Functions Reference 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. 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 pageby. 625 © 2017, MicroStrategy Inc. Functions Reference 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. 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). T 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 © 2017, MicroStrategy Inc. 626 Functions Reference blue background with bold type. 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. U 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. V 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. 627 © 2017, MicroStrategy Inc. Functions Reference W 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. Some types include Gauge, Heat Map, and Stacked Area widgets. © 2017, MicroStrategy Inc. 628 1 INDEX A Add 92 analytical engine 55 And 252 Apply functions 21, 26 ApplyAgg 132 ApplyComparison 133 ApplyComparison in filter 30 ApplyLogic 133 ApplyLogic 133 example 133 ApplyOLAP 133 example 134 ApplySimple 134 example 29, 134 argument 36 prompts 37 arithmetic operator 238 ApplyOLAP 133 Divide 239 ApplySimple 134 Minus 238 example 27, 30, 133-134 Plus 239 syntax 132 Times 239 using extra arguments in 132 Unary Minus 240 ApplyAgg 132 example 133 ApplyComparison 133 example 27, 30, 133 in filter 30 attribute 36 attribute form expression 44 accessing 45 average 93 moving 160 OLAP 171 © 2017, MicroStrategy Inc. 629 Functions Reference running 186 Between 243 Average 93 Between Enhanced 250 Avg 93 break by example 32 B banding functions 131 BandingC 137 BandingP 139 base formula 38 parameter 32 business example confidence level 75 hypothesis testing 70 statistical descriptors - Simple 84 basic functions 92 C Add 92 Average 93 Case 141 Avg 93 case functions 131 First 97 comparison for rank operator 248 GeoMean 98 Between Enhanced 250 Greatest 99 Equal Enhanced 249 Last 100 Greater Equal Enhanced 250 mathematical (arithmetic operators) 238 Less Equal Enhanced 248 Max 104 Median 105 Min 106 Mode 107 Product 109 StDev 111 StDevP 110 Sum 113 Var 115 VarP 114 Begins With comparison operator 243 string function 221 630 Not Between Enhanced 251 Not Equal Enhanced 249 comparison operator 240 Begins With 243 Between 243 Contains 243 Ends With 244 Equal 241 Greater 242 Greater Equal 242 In 244 Less Equal 241 Less Than 240 Like 244 © 2017, MicroStrategy Inc. Functions Reference Not Begins With 246 DayOfMonth 120 Not Between 246 DayOfWeek 120 Not Contains 247 DayOfYear 121 Not Ends With 247 DaysBetween 121 Not Equal 241 FiscalMonth 122 Not In 247 FiscalQuarter 122 Not Like 248 FiscalWeek 123 compound metric 38 FiscalYear 123 consolidation element expression 46 Hour 124 accessing 47 MilliSecond 124 Contains 243 Minute 125 count Month 125 moving 162 MonthEndDate 125 OLAP 174 MonthsBetween 126 running 187 MonthStartDate 126 CurrentDate 118 Quarter 127 CurrentDateTime 118 QuarterStartDate 127 CurrentTime 118 Second 128 custom expression with ApplyComparison in filter 30 toDateTime 128 custom group expression 47 accessing 48 Week 129 WeekStartDate 129 Year 129 D Data Mining functions 255 YearEndDate 130 YearStartDate 130 Date 118 DateDiff 119 date and time functions DayOfMonth 120 CurrentDate 118 DayOfWeek 120 CurrentDateTime 118 DayOfYear 121 CurrentTime 118 DaysBetween 121 Date 118 Degrees 268 DateDiff 119 © 2017, MicroStrategy Inc. 631 Functions Reference deviation Greater than 25 standard (population) 110 Median 23 standard (sample) 110-111 metric dimensionality 39 weighted standard (sample) 199 prompted date 27 dimensionality 38 RunningSum 24 distribution, standard normal cumulative 111, 199 sort by 33 Divide 239 expression 18 example 18 E Ends With comparison operator 244 ExpWghMovingAvg 148 example 149 ExpWghRunningAvg 151 string function 224 engine analytical 55 query 55 SQL 55 Equal 241 Equal Enhanced 249 example And 26 Apply function 27, 133-134 ApplyAgg 133 ApplyComparison 27, 133 ApplyLogic 133 ApplyOLAP 134 ApplySimple 29, 134 Avg 23 break by 32 BreakBy 24 expression 18 F fact expression 48 accessing 49 filter ApplyComparison function in 30 filter expression 50 accessing 51 financial functions Rate 266 First 97 first occurrence 229 FirstInRange 152 FiscalMonth 122 FiscalQuarter 122 FiscalWeek 123 FiscalYear 123 formula, metric 38 formula. See compound metric. 38 FTest 272 function parameter effects 36 632 © 2017, MicroStrategy Inc. Functions Reference function Input Metric Formula dialog box 44 basics of 20 Insert Function Wizard 53 parameters 31 internal functions processing 55 ApplyAgg 132 using prompts 37 ApplyComparison 133 function plug-in 67 ApplyLogic 133 function type 21 ApplyOLAP 133 Apply function 26 ApplySimple 134 Apply functions BandingC 137 example 27 BandingP 139 comparison function 25 Case 141 group-value function 23 IsNotNull 145 OLAP function 24 IsNull 145 single-value function 21-22 L G Lag 154 GeoMean 98 Last 100 Greater 242 last occurrence 225 Greater Equal 242 LastInRange 158 Greater Equal Enhanced 250 LastPosition 225 Greatest 99 Lead 159 LeftStr 225 H HeteroscedasticTTest 273 hierarchy 24 Length 226 Less Equal 241 Less Equal Enhanced 248 HomoscedasticTTest 273 Hour 124 Less Than 240 Like 244 I logical operator 252 If 142, 252 And 252 In 244 If 142, 252 InitCap 224, 234 Not 253 initial capitalization 224, 234 Or 253 © 2017, MicroStrategy Inc. 633 Functions Reference Lower 227 Minus 238 LTrim 227 Minute 125 Mode 107 M Match 228, 232 mathematical functions Degrees 268 Tanh 270 Max 104 maximum moving 165 OLAP 176 running 188 MeanTTest 275 Median 105 metric 38 base formula 38 dimensionality 38 formula 38 metric expression accessing 42 Metric Editor 42 MicroStrategy engine 55 function 55 function type 6 structure 55 Month 125 MonthEndDate 125 MonthsBetween 126 MonthStartDate 126 moving average 160 average, exponential weight 148 count 162 difference 164 maximum 165 minimum 166 standard deviation (population) 167 standard deviation (sample) 169 sum 170 MovingAvg 160 example 161 MovingCount 162 MovingDifference 164 MovingMax 165 MovingMin 166 MovingStdev 169 MovingStDevP 167 MovingSum 170 MilliSecond 124 N Min 106 minimum 106 634 Not 253 moving 166 Not Begins With 246 OLAP 179 Not Between 246 running 189 Not Between Enhanced 251 © 2017, MicroStrategy Inc. Functions Reference Not Contains 247 MovingAvg 160 Not Ends With 247 MovingCount 162 Not Equal 241 MovingDifference 164 Not Equal Enhanced 249 MovingMax 165 Not In 247 MovingMin 166 Not Like 248 MovingStdev 169 NTile 202 MovingStDevP 167 NTileSize 204 MovingSum 170 NTileValue 205 OLAPAvg 171 NTileValueSize 212 OLAPCount 174 NULL/Zero functions OLAPMax 176 IsNotNull 145 OLAPMin 179 IsNull 145 OLAPRank 181 ZerotToNull 146 OLAPSum 183 RunningAvg 186 O occurrence, position of first 229 occurrence, position of last 225 OLAP average 171 count 174 maximum 176 minimum 179 rank 181 sum 183 OLAP functions ExpWghMovingAvg 148 ExpWghRunningAvg 151 FirstInRange 152 Lag 154 LastInRange 158 RunningCount 187 RunningMax 188 RunningMin 189 RunningStDev 191 RunningStDevP 190 RunningSum 192 WeightedMean 197 WeightedStDev 199 OLAPAvg 171 OLAPCount 174 OLAPMax 176 OLAPMin 179 OLAPRank 181 OLAPSum 183 operator arithmetic 238 Lead 159 © 2017, MicroStrategy Inc. 635 Functions Reference comparison 240 RScriptU 256 logical 252 integrating with MicroStrategy 255 Or 253 Rank 217 rank and NTile functions P parameter 31 NTile 202 NTileSize 204 accessing 33 NTileValue 205 BreakBy 32 NTileValueSize 212 common 32 Percentile 213 SortBy 33 PercentRank 214 Pass-through functions. See Apply functions. 26 PercentRankRelative 216 Percentile 213 Rank 217 PercentRank 214 rank operator, comparison for 248 PercentRankRelative 216 rank, OLAP 181 Plus 239 Rate 266 Position 229 RDBMS platforms 131 Product 109 Replace 230 prompt RightStr 231 using in functions 37 RScript 255 RScriptAgg 255 Q Quarter 127 RScriptSimple 256 QuarterStartDate 127 query engine 55 RScriptU 256 RTrim 232 R R (analytics) functions 255 636 RScriptAggU 256 running average 186 average, exponential weight 151 RScript 255 count 187 RScriptAgg 255 maximum 188 RScriptAggU 256 minimum 189 RScriptSimple 256 standard deviation (population) 190 © 2017, MicroStrategy Inc. Functions Reference standard deviation (sample) 191 sum 192 string from left 225 RunningAvg 186 from right 231 RunningCount 187 string functions RunningMax 188 Begins With 221 RunningMin 189 Ends With 224 RunningStDev 191 InitCap 224, 234 RunningStDevP 190 LastPosition 225 RunningSum 192 LeftStr 225 Length 226 S Second 128 simple metric base formula 38 single-value function 21 sort by example 33 parameter 33 SortBy parameter 147 SQL engine 55 standard deviation moving 167, 169 running 190-191 statistical functions FTest 272 HeteroscedasticTTest 273 HomoscedasticTTest 273 MeanTTest 275 WeightedCorr 194 WeightedCov 196 StDev 111 Lower 227 LTrim 227 Match 228, 232 Position 229 Replace 230 RightStr 231 RTrim 232 SubStr 233 toNumber 235 toString 235 Trim 236 Upper 236 SubStr 233 subtotal expression 51 accessing 52 subtotals user-defined 51 sum moving 170 OLAP 183 running 192 StDevP 110 © 2017, MicroStrategy Inc. 637 Functions Reference Sum 113 of a sample 115 support. See technical support. 17 VarP 114 T W Tanh 270 Week 129 technical support 17 WeekStartDate 129 Times 239 WeightedCorr 194 toDateTime 128 WeightedCov 196 toNumber 235 WeightedMean 197 toString 235 WeightedStDev 199 totals window size 61 user-defined subtotals 51 Y transformation expression Year 129 accessing 52 YearEndDate 130 trim YearStartDate 130 left 227 right 232 Z Trim 236 ZeroToNull 146 U Unary Minus 240 Upper 236 upper case 236 user-defined subtotals 51 V value first in range 152 last in range 158 Var 115 variable. See compound metric. 38 variance of a population 114 638 © 2017, MicroStrategy Inc.

Download PDF

- Similar pages