# 功能需求
## 数据源
### 用户场景
1. 系统管理员将业务数据库/数据仓库中的数据接入BI平台
2. 其他用户自行上传CSV/XLSX文件作为数据源（第二期）

### 功能描述
作为数据来源为图表提供数据以及其他相关信息以供自定义图表
### 入口说明
- `新建数据源：数据源 => 创建数据源`
- `修改数据源：	数据源 =>  点击需要修改的数据源右边的齿轮弹出菜单 => 属性设置`

### 业务流程
- `选择数据库或者文件（第二期）=> `
- `选择一个已存在的数据连接或者新建一个数据连接（见数据连接部分）=>`
- `填入数据对象（SQL语句或者表名），点击获取列数据 =>`
- `按照需求为各列设置启用、列名、备注（会尝试获取注释字段）、分析类型（会尝试初步自动判断分析类型）、允许分组/分段（为按照分析类型判断是否可用）、别名 =>`
- `填入权限配置（第二期）`



### 界面UI
![数据源UI - 1](asset/image/dataSource-ui1.png)
![数据源UI - 2](asset/image/dataSource-ui2.png)
![数据源UI - 3](asset/image/dataSource-ui3.png)
![数据源UI - 4](asset/image/dataSource-ui4.png)
![数据源UI - 5](asset/image/dataSource-ui5.png)

### 信息要素
| 字段     	| 字段类型 	| 必填项 	| 字段说明                                                	|
|----------	|----------	|--------	|---------------------------------------------------------	|
| 名称     	| VARCHAR  	| 是     	|                                                         	|
| 说明     	|          	| 否     	|                                                         	|
| 创建人   	| VARCHAR  	| 否     	| 待用户系统建立后会自动填入                              	|
| 创建时间 	| DATETIME 	|        	| 待用户系统建立后会自动填入                              	|
| 数据对象 	| String   	|        	| 连接上数据库后具体连接的数据对象，可为表明或一段SQL语句 	|

### 界面功能按钮及交互说明
| 按钮 	| 按钮交互说明       	| 按钮功能说明                                                                                     	| 按钮逻辑                                                                                                 	|
|------	|--------------------	|--------------------------------------------------------------------------------------------------	|----------------------------------------------------------------------------------------------------------	|
|![分组管理器](asset/image/dataSource-Button1.png)      	| 分组管理器         	| 可展开分组管理器以进行分组管理                                                                   	| 点击展开，失焦时收起                                                                                     	|
|![分组选择器](asset/image/dataSource-Button2.png)      	| 分组选择器         	| 可下拉展开一个层级菜单选择显示的分组                                                             	| 点击展开，选择子项时标签变化为所选子项（如果是子节点会显示为面包屑形式）并收起，失焦时收起               	|
|![添加数据源](asset/image/dataSource-Button3.png)      	| 添加数据源         	| 可下拉展开一个普通菜单，显示可添加的数据源类型，目前包括数据库和文件选项                         	| 点击展开，选择子项时跳转，失焦时收起                                                                     	|
|![数据源操作](asset/image/dataSource-Button4.png)      	| 数据源操作         	| 可下拉展开一个层级菜单，可进行快速创建图表、属性设置、预览数据，分组、删除数据源                 	| 点击展开，选择分组层级菜单时和分组选择器功能一样，选择其他子项跳转相应页面，失焦时收起                   	|
|![获取列数据](asset/image/dataSource-Button5.png)      	| 获取列数据         	| 点击后会获取数据对象的列信息                                                                     	| 以已填入的数据连接信息和数据对象信息尝试向目标数据库请求该数据对象的列信息                               	|
|![启用开关](asset/image/dataSource-Button6.png)      	| 启用开关           	| 点击设定是否启用该数据列                                                                         	| 如果设为不启用，则图表在解析列信息时会忽略该列                                                           	|
|![列备注](asset/image/dataSource-Button7.png)      	| 列备注             	| 可修改该列备注                                                                                   	| 列备注默认获取数据对象中对应列的注释，在选择数据列时可以简短说明该数据列意义                             	|
|![分析类型](asset/image/dataSource-Button8.png)      	| 分析类型           	| 可选择该数据列的分析类型；取决于其数据类型，可能可选的选项有时间、索引、标量、类别、序值、字符串 	| 分析类型默认获取数据对象中对应列的数据类型然后解析判断为一个默认的分析类型，如果判断不正确可以手动修改。 	|
|![允许分组与允许分段](asset/image/dataSource-Button9.png)      	| 允许分组与允许分段 	| 可选择该数据列是否允许分组或分段；取决于其分析类型，可能可用或不可用                             	| 允许分组/分段默认根据其分析类型解析出其是否理论上可用于分组或分段，如果判断不正确可手动修改              	|
|![别名](asset/image/dataSource-Button10.png)      	| 别名               	| 可修改该列别名                                                                                   	| 别名用于图表中代表各数据列，默认获取相应的备注列信息，如果过长只会尝试截取头部，也可以另行修改           	|
|![保存修改](asset/image/dataSource-Button11.png)      	| 保存修改           	| 点击保存修改                                                                                     	| 向服务器提交表单保存修改                                                                                 	|


### 补充说明