README.md
9.7 KB
character-library-metadata-bastion
源文件管理
- 文件列表 - list
- 上传 - 上传 oss / 创建 file
- 加载 - loadDataTable
- 编辑 - editDataTable
- 持久化 - flushDataTable
- 导出 - url
- 删除 - delete
操作日志 - log
editDataTable params 列表
加载表格数据 loadDataTable - 查询
{
"fileId": 1,
"where": [
{
"field": {
"index": 1,
"name": "产品名称"
},
"in": ["a", "b"],
"ex": ["c", "d"],
"sort": ["a", "asc"]
}
]
}
编辑表格 editDataTable
{
"field": {
"index": 1,
"name": "产品名称"
},
"operation": {
"desc": ["拆分", "按字符数"],
"code": "split_by_char_number"
},
"params": []
}
精简
{
"field": "产品名称",
"desc": ["拆分", "按字符数"],
"operationCode": "split_by_char_number",
"params": []
}
params 列表
数据展示
{
"code": 0,
"data": {
"dataFields": [
{
"index": 1,
"name": "产品名称",
"type": "string"
},
{
"index": 2,
"name": "产品数量",
"type": "int"
}
],
"dataRows": [
["素面", 200],
["冻豆腐", 400],
["冻豆腐1", 300],
["冻豆2", "A"]
],
"total": 100,
"pageNumber": 1,
"inValidCells": [
{
"x": 1,
"y": 3,
"error": "不是一个有效的数值"
}
]
},
"msg": "ok"
}
表关联关系
- 可追加数据的表列表 /tables/search-appended-list
- 校验文件列表 /files/search-verified-file
- 匹配方案列表 /mapping-rule-config/search
- 匹配方案主表 /mapping-rule-config/prepare //主表 校验表 主表字段 校验文件表字段
- 匹配方案添加 /mapping-rule-config/
- 匹配方案删除 /mapping-rule-config/:id
- 追加数据到表格 /append-data-to-table // 验证是否追加过
取消校验中的文件 /cancel-verifying-file //
表结构更新 /tables/update-table-struct
表结构添加 /tables/add-table-struct
分表列表 /tables/search
表复制 /tables/copy-data-table
表删除 /tables/:id // 若是删除主表,需级联删除关联的分表,删除内容包括表数据及表结构;? 分表的副表是否要删除
表详情 /tables/:id // 表结构
表更新 /tables/:id // 表结构、分表才可以编辑
日志搜索 /log/search
校验步骤日志 /log/verified-step-Log
数据预览
- 表数据预览(格式) /table/preview
- 表数据自定义查询 /table/preview where conditions 升序、降序 包含、不包含
- 表数据字段可选值搜索 /table/field-optional 文本匹配
- 表数据更新、添加、删除 /table/row-data-mutation
- 表数据导出 /table/export-table
数据验证
- 文件验证 /data/edit-data-table
底层字库接口
- 数据预览 1
- 表格编辑 1
- 保存校验文件 (文件地址) 1
- 生成主表 1
- 表复制 (副表)1
- 追加数据 (主表、副表)
-
表删除 (主表、副表)
、分表 - 表拆分 1
- 更新表结构(分表)1
- 编辑、添加、删除表数据(副表) 1
- 取消校验
定时作业
- 隔天清理校验中的文件
- 隔天清理 public 临时文件
表数据导出
- 加锁,只允许当前用户同时只能发起一次导出命令 ,3min 过期
-
单次拉取数量 MR
- 100W ..
- 50W 120s 读取数据库:30s 保存文件:10s 下载:30M/500K=60S;RAR 压缩 24M/500k=50S
- 20W ..
- 10W ..
- 保存单个文件、压缩 | 保存多个文件、压缩
表达式解析
表达式类型说明
- ValueExprAST: 值表达式(数值,字符串) e.g. 1 、 2011-1-1 、字符串
json { "exprType":"ValueExprAST", "val":"", "str":"业绩2" }
- FieldExprAST: 字段表达式(处理的字段) e.g. 生产明细.业绩
json { "exprType":"FieldExprAST", "str":"业绩1", "field":{ "tableId":1, "tableName":"测试ABC", "tableSqlName":"table_abc_test", "fieldName":"业绩", "fieldSqlName":"ye_ji_1", "fieldSqlType":"Float" } }
-
BinaryExprAST: 二元表达式 e.g. 1 + 2 、 100 * 生产明细.业绩
{ "exprType":"BinaryExprAST", "op":"/", "lhs":{}, "rhs":{} }
-
FunCallerExprAST:函数表达式 e.g. sum(arg1,arg2,arg3)
{ "arrayFlag": false, "exprType": "FunCallerExprAST", "name": "sum", "args": [] }
用例
- 输入表达式
SUM(1/COUNTIFS(【业绩】,【业绩】))
json { "arrayFlag":false, "exprType":"FunCallerExprAST", "name":"sum", "args":[ { "exprType":"BinaryExprAST", "op":"/", "lhs":{ "exprType":"ValueExprAST", "val":"", "str":"1" }, "rhs":{ "arrayFlag":false, "exprType":"FunCallerExprAST", "name":"countifs", "args":[ { "exprType":"FieldExprAST", "str":"业绩1", "field":{ "tableId":1, "tableName":"测试ABC", "tableSqlName":"table_abc_test", "fieldName":"业绩", "fieldSqlName":"ye_ji_1", "fieldSqlType":"Float" } }, { "exprType":"ValueExprAST", "val":"", "str":"业绩2" } ] } } ] }
讨论事项
- 校验动作,参数模型讨论
- 校验日志错误(标红)
- 校验完毕应答实体,类型修改即使错误,也要返回修改完毕的表
参数说明
通用格式
{
"objectId": 1,
"processFields": [],
"action": "xx",
"params": {}
}
processFields:操作字段
常规
- 删除列
{
"action": "remove-column",
"params": {}
}
- 复制列
{
"action": "copy-column",
"params": {}
}
- 重命名
{
"action": "rename-column",
"params": {
"newColumnName": "新的列名称"
}
}
- 替换值
{
"action": "replace-column",
"params": {
"replaceMethod": "replace",
"searchValue": "搜索值",
"replaceValue": "替换值"
}
}
参数说明
replaceMethod: 替换方法(1.replace:替换值 2.add-prefix:添加前缀 3.add-postfix:添加后缀 4.remove-prefix:去除前缀 5.remove-postfix:去除后缀 6.remove-chars:去除固定字符 7.clean:清除)
searchValue: 搜索值-replace,remove-prefix,remove-postfix,remove-chars参数
replaceValue: 替换值-replace,add-prefix,add-postfix参数
格式 formatMethod
- 大写
{
"action": "format-column",
"params": {
"formatMethod": "upper"
}
}
参数说明
formatMethod: 格式化方法(1.upper:大写2.lower:小写3.capitalize:首字母大写4.strip:修整)
- 小写
{
"action": "format-column",
"params": {
"formatMethod": "lower"
}
}
- 首字母大写
{
"action": "format-column",
"params": {
"formatMethod": "capitalize"
}
}
- 清除
{
"action": "replace-column",
"params": {
"replaceMethod": "clean"
}
}
- 修整
{
"action": "format-column",
"params": {
"formatMethod": "strip"
}
}
- 添加前缀
{
"action": "replace-column",
"params": {
"replaceMethod": "add-prefix",
"replaceValue": "前缀值"
}
}
- 添加后缀
{
"action": "replace-column",
"params": {
"replaceMethod": "add-postfix",
"replaceValue": "后缀值"
}
}
- 去除前缀
{
"action": "replace-column",
"params": {
"replaceMethod": "remove-prefix",
"searchValue": "前缀值"
}
}
- 去除后最
{
"action": "replace-column",
"params": {
"replaceMethod": "remove-postfix",
"searchValue": "后缀值"
}
}
- 去除固定字符
{
"action": "replace-column",
"params": {
"replaceMethod": "remove-chars",
"searchValue": "字符"
}
}
拆分 split-column
- 按分隔符
{
"action": "split-column",
"params": {
"splitMethod": "separator",
"separator": "|",
"splitDirection": "left",
"splitCount": "1"
}
}
参数说明
separator: 分割符号 ‘|’
splitDirection: 拆分方向(1.left:从左边 2.right:从右边)
splitCount: 拆分次数
- 按字符数
{
"action": "split-column",
"params": {
"splitMethod": "char-length",
"splitDirection": "left",
"charLength": "10",
"splitCount": "1"
}
}
参数说明
charLength: 字符长度-char-length专属参数
splitDirection: 拆分方向(1.left:从左边 2.right:从右边)
splitCount: 拆分次数 (拆分策略是重复时:值0或者非1整数)
提取 extract-column
- 按日期
{
"action": "extract-column",
"params": {
"extractMethod": "by-date"
}
}
参数说明
extractMethod: 提取方法(1.by-date:按日期 2.by-number:按数值)
- 按数值 action
{
"action": "extract-column",
"params": {
"extractMethod": "by-number"
}
}
修改字段类型
{
"action": "convert-column-type",
"params": {
"convertType": "STRING"
}
}
参数说明
convertType:转换类型 STRING 数值: INT 小数: FLOAT 日期: DATE 时间: DATETIME
优化点
[] 0.测试服务、数据库的上限(QPS,TPS)查询瓶颈的接口
[] 1.模型详情缓存(tables、query_set)
[] 2.列表搜索缓存 (tables、query_set),减轻数据库压力
更新、删除、重命名
get list:queryset:cxxx:*
删除所有匹配的缓存
消息队列更新事件、确保缓存一定移除成功、缓存时间控制