想做一个对数据品质进行检测的类,高手们给个思路
想做一个对数据质量进行检测的类,高手们给个思路。
情况是这样:
想做一个对数据录入质量进行检测的类,要检测的数据是Excel,数据类型有多种,如货物信息表、员工信息表......。
检测的标准是上面定的,不同的数据种类有不同的标准,而且总改。传统情况是将数据导出来(比如导出本月录入的员工信息Excel格式)靠手动查看费时费力,我要把这些标准写成一个类库,通过对不同的数据调用类库中对应的标准进行检测自动出结果。
现在的问题是如果将各项标准写死在类库中,通用性不强,比如如果字段名称发生变化,还要改类库源文件;
另一个问题是对不同的数据种类要加载不同的检测标准,这个用什么方式实现比较科学;
请各位大神们给些思路,文笔一般,不知说明白没有?
------解决方案--------------------
设计一个规则库,把规则存在数据库,程序根据规则检查数据。比如首先指定要检测的数据有哪些,然后每种数据有什么检测规则等。
------解决方案--------------------
如果规则过于灵活,没法归纳,而且总要修改。你只能用脚本语言实现了。
比如IronPython或者js,然后在C#中调用脚本引擎加载执行,而脚本放在配置文件或者允许用户修改的地方。
google C# 脚本引擎
------解决方案--------------------
随便说几天可能的思路:
实际应用中这类问题有几个情况:
1. 就算是相同内容数据,其数据类型也会变化。
2. 模板经常变化,数据内容经常会被改动到Excel模板的别的地方。
3. 根本不是“先建数据库表,然后读取Excel”,而应该是“根据Excel内容,自动创建数据库表”。
4. Excel原本有强大的“数据有效性检验”或者“序列”下来选项约束,可惜你们的Excel模板都不会用,才会出现录入错数据。
居于这一点,其实你应该首先去理解Excel的设计思想。它能够灵活地用于广大的企业用户中替代各种简单的管理软件,不是吹出来的。模拟它的结构,你能够开动脑筋进行产品设计。如果你们在原始Excel模版上用好用熟Excel,那么所谓的“数据质量检验”就可以省省力气了。
其次,在.net中,有动态对象机制。例如
这样你就可以通过
我们有一个产品,可以自动地将企业所有的Excel表纳入一个“网络服务”中。所有用户填写Excel表时,客户端系统打开最新的Excel模板,启动Office供用户填写内容(包括查询服务器上的业务数据)。然后用户点Excel的“保存”功能,Excel中的数据就被自动“抽取”到服务器上了。无需手动定义数据库表。从一个Excel工作簿中抽取的数据,可以自动填写到另外一种Excel模板的工作簿内。例如在一个工作流里,下级质量监督单位填写的Excel报告数据可以自动填写到上级单位的审批报告中。
实际上,你的程序至少要做到这样几件事:
1. 自动从Excel创建灵活的数据库,绝对不需要先去手工创建什么数据库表结构。
2. 自动从互联网的任何远程客户端抽取Excel数据到服务器。服务器上根本不存什么Excel,只保存抽取来的通用数据。
3. 一个Excel模板的设计可以随时修改,可以添加删除内容,可以改变位置(包括改变到不同工作表),数据仍然照常抽取和加载。
------解决方案--------------------
我觉得这个问题需要这样看,如果仅仅是字段的名称发生变化,你可以把字段名称和对应的规则建立在数据库中,你的程序就可以根据字段自动选择规则。
关键是规则如果变化,那就要看如何变化,能不能分解?或者变成正则表达式,如果能有正则表达式表达,那么就可以吧规则建立在数据库中,通过程序自动调用。
qq55256244
情况是这样:
想做一个对数据录入质量进行检测的类,要检测的数据是Excel,数据类型有多种,如货物信息表、员工信息表......。
检测的标准是上面定的,不同的数据种类有不同的标准,而且总改。传统情况是将数据导出来(比如导出本月录入的员工信息Excel格式)靠手动查看费时费力,我要把这些标准写成一个类库,通过对不同的数据调用类库中对应的标准进行检测自动出结果。
现在的问题是如果将各项标准写死在类库中,通用性不强,比如如果字段名称发生变化,还要改类库源文件;
另一个问题是对不同的数据种类要加载不同的检测标准,这个用什么方式实现比较科学;
请各位大神们给些思路,文笔一般,不知说明白没有?
------解决方案--------------------
设计一个规则库,把规则存在数据库,程序根据规则检查数据。比如首先指定要检测的数据有哪些,然后每种数据有什么检测规则等。
------解决方案--------------------
如果规则过于灵活,没法归纳,而且总要修改。你只能用脚本语言实现了。
比如IronPython或者js,然后在C#中调用脚本引擎加载执行,而脚本放在配置文件或者允许用户修改的地方。
google C# 脚本引擎
------解决方案--------------------
随便说几天可能的思路:
实际应用中这类问题有几个情况:
1. 就算是相同内容数据,其数据类型也会变化。
2. 模板经常变化,数据内容经常会被改动到Excel模板的别的地方。
3. 根本不是“先建数据库表,然后读取Excel”,而应该是“根据Excel内容,自动创建数据库表”。
4. Excel原本有强大的“数据有效性检验”或者“序列”下来选项约束,可惜你们的Excel模板都不会用,才会出现录入错数据。
居于这一点,其实你应该首先去理解Excel的设计思想。它能够灵活地用于广大的企业用户中替代各种简单的管理软件,不是吹出来的。模拟它的结构,你能够开动脑筋进行产品设计。如果你们在原始Excel模版上用好用熟Excel,那么所谓的“数据质量检验”就可以省省力气了。
其次,在.net中,有动态对象机制。例如
var obj = new ExpandoObject();
var dic = (IDictionary<string,object>)obj;
这样你就可以通过
dic.Add("adfk", akdfkads);这样的形式将你从Excel中得到的不同“命名单元”的值保存到obj中。
我们有一个产品,可以自动地将企业所有的Excel表纳入一个“网络服务”中。所有用户填写Excel表时,客户端系统打开最新的Excel模板,启动Office供用户填写内容(包括查询服务器上的业务数据)。然后用户点Excel的“保存”功能,Excel中的数据就被自动“抽取”到服务器上了。无需手动定义数据库表。从一个Excel工作簿中抽取的数据,可以自动填写到另外一种Excel模板的工作簿内。例如在一个工作流里,下级质量监督单位填写的Excel报告数据可以自动填写到上级单位的审批报告中。
实际上,你的程序至少要做到这样几件事:
1. 自动从Excel创建灵活的数据库,绝对不需要先去手工创建什么数据库表结构。
2. 自动从互联网的任何远程客户端抽取Excel数据到服务器。服务器上根本不存什么Excel,只保存抽取来的通用数据。
3. 一个Excel模板的设计可以随时修改,可以添加删除内容,可以改变位置(包括改变到不同工作表),数据仍然照常抽取和加载。
------解决方案--------------------
我觉得这个问题需要这样看,如果仅仅是字段的名称发生变化,你可以把字段名称和对应的规则建立在数据库中,你的程序就可以根据字段自动选择规则。
关键是规则如果变化,那就要看如何变化,能不能分解?或者变成正则表达式,如果能有正则表达式表达,那么就可以吧规则建立在数据库中,通过程序自动调用。
qq55256244