
# 1 简介
Algo提供SQL计算功能的计算框架,支持常用的SQL算法,遵循SQL-92标准。
## 1.1 Algo对象
| 接口/对象类 | 用途 | 说明 |
| - | - | - |
| kd.bos.algo.Algo | 创建DataSet getCacheDataSet(String cacheId) | 这个类是入口,给平台使用的,业务不要使用 |
| kd.bos.algo.DataSet | DataSet操作接口,包括转换,action,close等 ||
| Kd.bos.algo.RowMeta | DataSet的元数据,类似jdbc ResultSetMetaData由字段Field[]组成 ||
| Kd.bos.algo.Field | 字段 | |
| Kd.bos.algo.DataType | 数据类型,包括主要数据类型| |
| Kd.bos.algo.Input | 数据源接口| |
| Kd.bos.algo.Row | 行接口,行值访问器 | Row是一个虚接口,访问器,不是Object[],所以业务代码不能把Row缓存起来|
| CachedDataSet | DataSet.cache的结果对象 | 不是DataSet的子类|
| CacheHint | Cache hint,指示 | |
| JoinDataSet | DataSet.join的结果对象,也是Join构造器 | 不是DataSet的子类 |
| HashJoinDataSet | DataSet.hahJoin的结果对象,也是HashJoin构造器 | 不是DataSet的子类 |
| GroupbyDataSet | DataSet.groupBy的结果对象,也是groupBy构造器 | 不是DataSet的子类 |
| HashTable | DataSet.toHashTable的结果对象,是hashJoin的参数 | |
| JoinType | Join类型枚举| |
| JoinHint | Join hint,指示| |
| RowMetaFactory | 创建RowMeta | 给平台用的 |
## 1.2 RowMeta、Field和DataType
RowMeta、Field和DataType对应数据库中的行数据、字段和数据类型。
+ 获取RowMeta
```java
RowMeta rowMeta = dataSet.getRowMeta();
```
+ 获取Field
```java
Field field = rowMeta.getField(index);
```
+ 获取DataType
```java
DataType type = field.getDataType();
```
## 1.3 数据类型
| 类型 | 说明 |
| - | - |
| BooleanType | |
| StringType | |
| IntegerType | |
| LongType | |
| DoubleType | 从元数据ORM框架查出来的数据不会有Double |
| B