<br>The functions we've identified as required are:<br><br>LEFT<br>LEN<br>UCASE<br>INSTR<br>mid<br><br>Since we're implementing MID and LEFT I expect we'd also handle Substring while we're at it, since they provide the same functionality.
<br><br><br><div><span class="gmail_quote">On 2/12/07, <b class="gmail_sendername">Julian Hyde</b> <<a href="mailto:julianhyde@speakeasy.net">julianhyde@speakeasy.net</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Matt,</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font> </div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Can you give me a list of functions you need? Already
on my list (see <a href="http://mondrian.pentaho.org/documentation/roadmap.html#Feature_Standard_functions" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://mondrian.pentaho.org/documentation/roadmap.html#Feature_Standard_functions
</a>)
are:</span></font></div>
<ul dir="ltr">
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Cint(String) returns Number
*</span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>CStr(Number) returns String
*</span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Power(Number, Number) returns
Number</span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Log(Number) returns Number</span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Sqrt(Number) returns Number</span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Substring(String, Integer) returns
String</span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Substring(String, Integer, Integer) returns
String</span></font></div></span></font></div></li>
<li>
<div align="left"><font color="#000080" face="Verdana" size="2"><span>Trim</span></font></div></li></ul>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>* CInt and CStr are subsumed by the Cast operator
which I implemented recently, but will help people to run MDX queries
unchanged.</span></font></div></span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font> </div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>See further comments inline.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font> </div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Julian</span></font></div><br>
<blockquote style="border-left: 2px solid rgb(0, 0, 128); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div dir="ltr" align="left" lang="en-us">
<hr>
<font face="Tahoma" size="2"><b>From:</b> <a href="mailto:mondrian-bounces@pentaho.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mondrian-bounces@pentaho.org</a>
[mailto:<a href="mailto:mondrian-bounces@pentaho.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mondrian-bounces@pentaho.org</a>] <b>On Behalf Of </b>Matt
Campbell<br><b>Sent:</b> Friday, February 09, 2007 8:26 AM<br><b>To:</b>
Mondrian developer mailing list<br><b>Subject:</b> [Mondrian] VBA functions /
IIF<br></font><br></div><span class="q">
<div></div><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font>
<font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font>
<div><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><br>
The client
tool we're using (Cognos) issues some vba functions in its MDX
occasionally: INSTR, MID, LEN, etc. We've been considering how
best to deal with it. We could just create some UDFs that mimic what the
vba function does, but we could also create them as builtin Mondrian
functions. Does anyone have an opinion? <span><font color="#000080" face="Verdana" size="2"> </font></span></div></span></blockquote>
<div><span><font color="#000080" face="Verdana" size="2">
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>I'd prefer that functions like this are implemented as
UDFs. </span></font><font color="#000080" face="Verdana" size="2"><span>mondrian.udf.ValUdf is an example (implemented by Gang
Chen) of a VB function implemented in this way.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font> </div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Even though they are implemented as UDFs, these
functions would be available out-of-the-box. Include them in
src/main/META-INF/services/mondrian.spi.UserDefinedFunction and they will be
picked up automatically.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font> </div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>As usual, we need a handful of testcases in
FunctionTest for each function.</span></font></div></font></span></div><span class="q">
<blockquote style="border-left: 2px solid rgb(0, 0, 128); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
<div><span> </span><br><br>We also plan on
overriding IIF to support some additional parameter types. Right now IIF
supports iif( <logical expression>, <string>,<string>) and
iif(<logical expression>,<number>,<number>). We'd like
to add iif(exp,value, str), iif(exp,str, value), iif(exp,value, value).
All of these permutations are supported by AS2K. <span><font color="#000080" face="Verdana" size="2"> </font></span></div>
<div><span><font color="#000080" face="Verdana" size="2"></font></span> </div></blockquote>
</span><div><span>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>You're welcome to add other overloads to Iif.
</span></font><font color="#000080" face="Verdana" size="2"><span>Iif is currently a builtin function, and it should stay
that way.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font> </div></span><span><font color="#000080" face="Verdana" size="2"></font></span></div>
<div><span><font color="#000080" face="Verdana" size="2">Julian</font></span></div></div>
<br>_______________________________________________<br>Mondrian mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Mondrian@pentaho.org">Mondrian@pentaho.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">
http://lists.pentaho.org/mailman/listinfo/mondrian</a><br><br></blockquote></div><br>