@@ -38,9 +38,22 @@ MDXParser.prototype.prependNonEmpty = function (expression) {
3838 return expression . match ( / ^ \s * n o n \s + e m p t y / i) ? expression : "NON EMPTY " + expression ;
3939} ;
4040
41+ /**
42+ * Applies Row Count to mdx.
43+ * Source: SELECT [Test].Members ON 0, NON EMPTY [Test2].Members ON 1 FROM [Tests] %FILTER
44+ * Out: SELECT [Test].Members ON 0, NON EMPTY HEAD([Test2].Members, N) ON 1 FROM [Tests] %FILTER
45+ * @param {string } expression - MDX expression.
46+ * @param {number } n - Number of rows to return.
47+ * @returns {string }
48+ */
49+ MDXParser . prototype . applyRowCount = function ( expression , n ) {
50+ return expression . replace ( / \s * o n \s * 0 \s * , \s * (?: n o n \s * e m p t y \s * ) ? ( .* ) \s * o n \s * 1 / i, function ( a , b ) {
51+ return typeof n !== "undefined" ? " ON 0, NON EMPTY HEAD(" + b + ", " + n + ") ON 1" : a ;
52+ } ) ;
53+ } ;
54+
4155/**
4256 * Performs DrillDown on MDX query.
43- *
4457 * @param {string } mdx
4558 * @param {string } filter
4659 * @param {string } [expression] - if is set, "* ON 1" will be replaced with "{value} ON 1"
@@ -49,8 +62,8 @@ MDXParser.prototype.prependNonEmpty = function (expression) {
4962MDXParser . prototype . drillDown = function ( mdx , filter , expression ) {
5063
5164 if ( ! filter ) {
52- if ( / ] \s + O N \s + 1 / . test ( mdx ) ) {
53- return mdx = mdx . replace ( / ] \s + O N \s + 1 / , "].children ON 1" ) ;
65+ if ( / ] \s + O N \s + 1 / i . test ( mdx ) ) {
66+ return mdx = mdx . replace ( / ] \s + O N \s + 1 / i , "].children ON 1" ) ;
5467 } else {
5568 this . _warnMDX ( mdx , "no filter specified" ) ;
5669 return "" ;
0 commit comments