电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

Algo-内存数据库计算引擎接口说明

来源:金蝶云社区作者:金蝶2024-09-235

Algo-内存数据库计算引擎接口说明

# 1 接口说明 Algo相关接口定义和实现存在于bos-algo-1.0.jar中。在实际使用过程中主要使用DataSet的相关接口方法。 # 2 接口列表 **DataSet** | 接口方法 | 说明 | | - | - | | join | join操作 | | leftJoin | leftJoin操作 | | rightJoin | rightJoin操作 | | fullJoin | fullJoin操作 | | hashJoin | hashJoin操作 | | union | union操作 | | top | 取top n个 | | limit | 取部分行 | | range | 取部分行,类似limit | | copy | 拷贝自己 | | count | 对field进行count计数,distinct消除重复 | | cache | 将dataset缓存起来 | | cacheBuilder | | | print | 打印输出到console | | close | 关闭 | | select | 选择字段。类似:select a,b,c,a,b,c可以是表达式 | | addField | 增加字段 | | addNullField | 增加null字段,等价于addField("null",alias) | | addBalanceField | 增加余额字段,该字段的值从上往下累加 | | removeField | 删除字段 | | filter | 过滤,类似where,expr中可以写变量,变量值通过params传递,比如”a>b”, params是map,key包含a和b | | where | 过滤 | | orderBy | 排序,field可以写成field asc,field desc | | groupBy | groupBy操作 | | executeSql | 执行sql | # 3 select + **功能描述** 选择字段。类似:select a,b,c,a,b,c可以是表达式。 + **方法** ```java public DataSet select(String[] exprs) public DataSet select(String exprs); ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | exprs | String[] | exprs可以是 字段field、Field as alias、表达式 as alias;Select是对源DataSet的重新选择,类似sql;DataSetA.Select(new String[]{“a”,”b+c as d”})等价于Select a,b+c as d from DataSetA。 | | exprs | String | exprs可以是直接写多个字段,比如dataSetA.select(“fname, famount as amount,1+2 as c”); | + **返回值** 返回选择字段后的DataSet。 + **示例代码** ```java DataSet ds= dataSet.select(new String[]{ "famount", "famount c1", "famount + fqty c2", "famount * fqty c3", "null c4", "true c5", "(famount + fqty) * 3 c6", "famount >= fqty c7", "famount >= fqty and fqty<100 c8", "fname + 'abc' name"}); DataSet ds= dataSet.select( "famount, famount c1,famount + fqty c2,famount * fqty c3 ,null c4,?true c5,(famount + fqty) * 3 c6,famount >= fqty c7,famount >= fqty and fqty<100 c8,fname + 'abc' name}"); ``` # 4 addField + **功能描述** 添加字段。 + **方法** ```java // 在现有DataSet基础上添加字段,或者删除字段 public DataSet addField(String expr, String alias) // 添加表达式expr字段,数据类型自动判断 public DataSet addField(String expr, String alias) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | expr | String | expr可以是字段field、Field as alias、表达式 as alias | | alias | String | 字段别名 | + **返回值** 返回添加完字段后的DataSet。 # 5 addNullField + **功能描述** 添加值为null的字段,数据类型为NullType。 + **方法** ```java public DataSet addNullField(String alias) public DataSet addNullField(String... aliases) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | alias | String | 别名 | | aliases | String... | 别名数组 | + **返回值** 返回添加完字段后的DataSet。 # 6 addBalanceField + **功能描述** 添加余额字段,addBalanceField方法将字段的值从上往下累加。 + **方法** ```java public DataSet addBalanceField(String expr, String alias) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | expr | String | 表达式 | | alias | String | 别名 | + **返回值** 返回添加完字段后的DataSet。 + **代码示例** ```java addBalanceField("amount", "balance") addBalanceField("amount * 2", "balance2") ``` | Period | Amount | balance | balance2 | | - | - | - | - | | 201701 | 100 | 100 | 200 | | 201702 | 200 | 300 | 600 | | 201703 | 200 | 500 | 1000 | # 7 removeField + **功能描述** 删除字段。 + **方法** ```java public DataSet removeField(String field) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | field | String | 字段名称 | + **返回值** 返回删除完字段后的DataSet。 # 8 where/filter + **功能描述** 过滤,类似where,expr中可以写变量,变量值通过params传递,比如”a>b”, params是map,key包含a和b。filter类似于sql的where条件。where和filter是完全等价的。 + **方法** ```java public DataSet where(String expr) public DataSet where(String expr, Map<String, Object> params) public DataSet filter(String expr) public DataSet filter(String expr, Map<String, Object> params) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | expr | String | expr是计算表达式,必须为boolean | | params | Map<String, Object> | params传递参数给expr。如expr为famount + var1 > 10000。params为:{var1: 100}等价于: famount+100>10000。 | + **返回值** 返回过滤后的DataSet。 + **代码示例** ```java DataSet ds= dataSet.where("famount>50 and (fqty-100)<5"); DataSet ds = dataSet.filter("famount>50 and (fqty-100)<5"); ``` # 9 orderBy + **功能描述** 排序。 + **方法** ```java public DataSet orderBy(String[] exprs) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | expr | String[] | expr可以是:字段Fname,默认为asc排序。Fname asc、Fname desc、Expr不可以为表达式 | + **返回值** 返回排序后的DataSet。 + **代码示例** ```java DataSet dataSet2 = dataSet.orderBy(new String[]{"fname", "famount"}); DataSet dataSet2 = dataSet.orderBy(new String[]{"fname desc", "famount asc"}); ``` # 10 groupBy + **功能描述** groupBy操作与SQL中的类似。 ***groupBy说明*** 1. GroupBy结果集默认根据group fields排序,默认asc排序,可以对每个field的排序方向进行设置,即以下orderByDescs: ```java GroupbyDataSet groupBy(String[] groupFields, boolean[] orderByDescs); ``` 所以,对groupby结果进行orderBy,请考虑是否有必要。 2. SQL 92标准,group by结果是不保证排序的,上述API查询结果默认是排序的,是历史原因,目前无法简单去掉;现在没有sql的group by,结果就不保证排序 3. 当GroupBy字段为空时,如dataset.groupBy(null),或者dataSet.groupBy(new String[0]);dataSet.groupBy(null).sum(a).max(b).finish()等价于没有groupby。 4. 有聚合函数的sql:Select sum(a),max(b) from t;如果用sql,可以简写: Select sum(a),max(b), 不需要group by关键字。 + **方法** ```java GroupbyDataSet groupBy(String[] groupFields) GroupbyDataSet groupBy(String[] groupFields, boolean[] orderByDescs) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | | groupFields | String[] | groupBy字段 | | orderByDescs | boolean[] | 是否desc排序| + **返回值** 返回GroupbyDataSet对象。 + **代码示例** **调用过程** 1. 获取构造器GroupByDataSet。 2. 构造器里设置sum,avg等聚合函数。 3. 构造器finish得到DataSet。 ```java GroupbyDataSet groupby = dataSet.groupBy(new String[]{"fname"}); //groupby是构造器 groupby = groupby.sum("(famount + fqty) * 2", "amount").count("countalias"); groupby = groupby.maxP("famount", "fqty", "amount").count(); DataSet dataSet2 = groupby.finish(); //构造完毕,返回DataSet ``` # 11 union + **功能描述** union操作与SQL的union类似。两个DataSet叠加起来,不支持消除重复。 两个DataSet字段个数必须相同,且每个字段的类型必须互相兼。 ***字段Fields合并规则*** 1. 默认字段名取左边。 2. 数据类型取左边和右边的兼容类型。 ***数据类型兼容规则*** 1. Number类型,取最大精度如(Int,Long)取long,(BigDecimal,Long)取BigDecimal。 2. 含Null类型的,取非Null类型。 3. 含Unknown类型的,取非Unknown类型的。 如果两个DataSet字段个数不同,又需要Union,可以通过DataSet.addNullField()添加null字段,以满足相同个数。 + **方法** ```java public DataSet union(DataSet rightDataSet) ``` + **参数说明** | 参数 | 类型 | 说明 | | - | - | - | |

Algo-内存数据库计算引擎接口说明

# 1 接口说明Algo相关接口定义和实现存在于bos-algo-1.0.jar中。在实际使用过程中主要使用DataSet的相关接口方法。# 2 接口列表**DataS...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信