@@ -38,9 +38,22 @@ MDXParser.prototype.prependNonEmpty = function (expression) {
38
38
return expression . match ( / ^ \s * n o n \s + e m p t y / i) ? expression : "NON EMPTY " + expression ;
39
39
} ;
40
40
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
+
41
55
/**
42
56
* Performs DrillDown on MDX query.
43
- *
44
57
* @param {string } mdx
45
58
* @param {string } filter
46
59
* @param {string } [expression] - if is set, "* ON 1" will be replaced with "{value} ON 1"
@@ -49,8 +62,8 @@ MDXParser.prototype.prependNonEmpty = function (expression) {
49
62
MDXParser . prototype . drillDown = function ( mdx , filter , expression ) {
50
63
51
64
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" ) ;
54
67
} else {
55
68
this . _warnMDX ( mdx , "no filter specified" ) ;
56
69
return "" ;
0 commit comments