基本函数

<< Click to Display Table of Contents >>

当前位置:  制作可视化报告 > 脚本 > 永洪脚本函数 > 全局函数 

基本函数

复制链接

函数

语法

说明

举例

newInstance

newInstance(String classname);

创建一个对象实例。

var a=newInstance(query);

isNull

isNull (Object obj);

检测对象是否为空。

var a=isNull(query);

isNumber

isNumber(Object val);

检测对象是否是数值类型的。

var a=isNumber(query);

isDate

isDate(Object val)

检测对象是否是日期类型的。

var a=isDate(sell_date);

getWeek

getWeek(Object date)

从Date对象返回一年中的第几周。

var d = new Date("July 10, 2012 01:15:00");

var a=getWeek(d);

输出a=28

getDate

getDate(Object date)

返回一个java的日期。

var d = new Date("July 21, 1983 01:15:00");

var a=getDate(d);

cloneDate

cloneDate(Object date)

复制日期。

var d = new Date("July 21, 1983 01:15:00");

var a=cloneDate(d);

formatDate

formatDate(Object val, String fmtstr);

给日期设定显示格式。

var date= new Date("July 21, 1983 01:15:00");

var a=formatDate(date, "yyyy-MM-dd mm:hh");

parseDate

parseDate(String str, String fmt)

根据指定格式,解析字符串,返回日期对象。

var str = "1991-10-01";

parseDate(str, "yyyy-MM-dd");

dateAdd

dateAdd(Object date, String option)

用来给日期添加指定时间间隔。

时间间隔option包括:year,quarter,month,weekofyear,dayofyear,dayofmonth,dayofweek,hour,minute,second。

var date= new Date("July 21, 1983 01:15:00");

var d=dateAdd(date,"month",1);//增加一月

dateGap

dateGap(Object startDate, Object endDate, String option)

两个日期之间的时间差。

时间间隔option包括:year,quarter,month,weekofyear,dayofyear,dayofmonth,dayofweek,hour,minute,second。

var date= new Date("July 21, 2012 01:15:00");

var date2= new Date("June 10, 2012 01:15:00");

var a =dateGap(date,date2,"month");

datePart

datePart(Object date, String option)

取出年、月、日等各部分的数值

时间间隔option包括:year,quarter,month,weekofyear,dayofyear,dayofmonth,dayofweek,hour,minute,second。

var date= new Date("July 21, 1983 01:15:00");

var a=datePart(date,"year");//a=1983

split

split(String str, String delim, Object limit);

把字符串分割为字符串数组。

var str="How are you doing today?";

var b=str.split(" ");

结果为How,are,you,doing,today?

split2Array

split2Array(String str, int dataType)

将字符串分割为字符串数组。

var a ="How are you";

var b=split2Array(a,2);

formatNumber

formatNumber(double number, String fmt);

将数字按照指定的格式转化为字符串。

var a =formatNumber(498.8573945,"#,##0.##");就可以输出:498.86

toString

toString(Object val)

将任意对象转换为字符串。

var b=2.34;

var a =toString(b);

substring

substring(String str, Integer idx, Object end)

返回某个指定位置的字符串的子集。

参数1:给定的字符串。

参数2:一个非负的整数,规定要提取的子串的第一个字符在给定的字符串中的位置。

参数3:可选,非负的整数。如果省略该参数,那么返回的子串会一直到字符串的结尾。

var b=”Hello world”;

var a =b.substring(0,3);

sqr

sqr(Object val);

对数据求平方。

var a=sqr(2);//a=4

sqrt

sqrt(Object val);

返回给定数据的平方根。

var a=sqrt(9);//a=3

abs

abs(Object val)

返回给定数据的绝对值。

var a=abs(-7);//a=7

debug

debug(Object msg);l

用来调试,向前台和日志文件输出信息。

debug("msg");

execute

execute(Scriptable scope, int type, String path, [Object allCols])

运行一个数据集。

参数1:运行此脚本的作用域,通常用this,表示当前作用域。

参数2:数据集的类型,支持的8 种类型:SQL,EXCEL,SCRIPT,CUSTOM,CLOUD,EMBED,COMPOSITE,MONGO,DATA_FLOW,MDX。

path是指数据集的路径及名称。如果有目录就用“/”连接起来。

allCols是指当为true时,数据集的表达式列可见,当为false时 , 数据集的表达式列不可见。

var data=execute(this, Embed, "query1");

preExecute

preExecute(Scriptable script, int type, String path, [Object allcols])

先预编译一个查询。

var a=preExecute(this,SQL,"data",true);

var b=executed(a);

setData("表1", b, DATA);

executed

executed(Object executedID)

运行预编译的一个查询。

var a=preExecute(this,SQL,"data",true);

var b=executed(a);

setData("表1", b, DATA);

removeExecuted

removeExecuted(Object executedID)

删除预编译的查询。

var a=preExecute(this,SQL,"data",true);

var b=removeExecuted(a);

var c=executed(a);

setData("表1", c, DATA);

join

join(Scriptable scope, int jhint, int jop, Object jleft, Object jright, Object jlkeys, Object jrkeys, Object jlcols, Object jrcols)

将两个任意的数据集执行后的查询结果做联接,并返回新的查询结果。要求做映射的关键字段的数据类型要匹配。

scope 是指运行此脚本的作用域,通常用 this表示当前作用域。

jhint是join的提示。LEFT_MAIN左表为主,RIGHT_MAIN右表为主,FINAL_JOIN是最终表,

TEMP_JOIN是个临时表,会被回收的表。

jop是连接操作符。JOIN是内连接;LEFT_JOIN左连接; RIGHT_JOIN右连接; FULL_JOIN全连接。

jleft:左表。

jright:右表。

jlkeys:左表连接的字段。

jrkeys:右表连接的字段。

jlcols: 左表留下哪些字段。

jrcols:右表留下哪些字段。

join(this, FINAL_JOIN | LEFT_MAIN, LEFT_JOIN, query1, query2, [1], [3], [1,2], [3,1]);

// 左表query1的第1列和右表 query2的第3列连接,留下 query1的1和2列, query2的3 和1列。

union

union  (Scriptable scope, Object ugrids)

将两个任意的数据集执行后的查询结果进行合并,并返回新的查询结果。两个数据集的字段个数是匹配的,而且数据类型也是匹配的。

scope是指运行此脚本的作用域,通常用this表示当前作用域。

ugrids哪些表求交集。如果列不匹配会出错。此参数是个数组。

union(this, [a, b]);

// 将a和b进行合并。

columns

columns  (Scriptable scope, Object cgrid, Object ccols)

将某些列的数据从一个数据集结果里提取出来,并返回一个新的查询结果。

scope是指运行此脚本的作用域,通常用this表示当前作用域。

cgrid是指哪个数据集结果被提取。

ccols是指哪些列被提取。

columns(this, query1, [3,1] );

//把query1中的第3和第1列取出形成新的数据网

sort

sort (Scriptable scope, Object sgrid, Object scols, Object sascs)

将数据集结果中的某些列做排序,并返回一个新的查询结果。

scope是指运行此脚本的作用域,通常用this表示当前作用域。

sgrid是指哪个查询结果被排序。

scols是指哪些字段被排序。

sascs是指各字段用什么排序类型:true(升序), false(降序)。

sort(this, query1, [3,1], [SORT_DESC, SORT_ASC]);

//先第3列降序,再第1列升序。

embed

embed(Object val)

数组转换为内嵌查询。

var  a=[["编号","2","3"],["姓","wang","yao"]];

var  b=embed(a);

setData("表1",b,DATA);

toArray

toArray(Object gobj,Object cobj)

查询中的列转换为数组。

var query1=execute(this,SQL, 'coffee3');

var a=toArray(query1,"product");

data=compare("Decaf Espresso",a[0]);

position

position(Object ox, Object oy)

把经度和纬度转化为一个长整型来存储。

position(10, 10);

putGlobal

putGlobal(String key,Object val)

全局常量。

putGlobal("a",1)

var c=a;

toSQLDate

toSQLDate(Object val, int ctype)

普通日期转换为SQL支持的时间戳。

var  a=new Date("January 12,2006 22:19:35");

var b=toSQLDate(a, DType.TIME).toString();

indexOf

indexOf(String str, String istr, [Object cidx])

返回某个指定的字符串值在字符串中首次出现处的索引。

str:源字符串。

istr:要查找的字符串。

cidx:从cidx位置开始查找。

var a = "my hello world!"

var b = indexOf(a, "hello");

toDate

toDate(Object javaDate)

将后台取到的时间转换为另一种时间。

var a= param["date"];

var b= toDate(a).toString().substring(0,10);

aggregates

aggregates(Script scope, Object cgrid, Object odims, Object omeasures)

对数据结果进行分组合计,组成新的数据结果。

scope是指运行此脚本的作用域,通常用this表示当前作用域。

cgrid DataGrid对象,是指对哪个查询结果进行分组合计。

odims指定DimCol,定义分组列,是一个数组。。

omeasure指定MeasureCol,定义合计列,是一个数组。

var a = execute(this, SQL, "Coffee");

var bcol1 = new BCol("TYPE", STRING, true);

var bcol2 = new BCol("COGS", DOUBLE, false);

var dimCol = new DimCol(bcol1);

var meaCol = new MeasureCol(SUM, bcol2, null);

var b = aggregates(this, a,[dimCol],[meaCol])

setData("表1", b, DATA);