【发布时间】:2015-09-23 14:12:31
【问题描述】:
我正在寻找一种将平面数据转换为数据结构的方法。此转换的输入不是同质的。有些数据包含太多信息,有些数据包含需要处理的信息。
让我用一个例子来解释。假设我有一些带有汽车数据的 Excel 文件。这些文件包含有关汽车及其引擎的信息。
文件 1:
姓名 |类型 |引擎ID |制造商 |功率(马力) |扭矩 欧宝 |亚当 | I4 |欧宝 | 69 | 115文件 2:
品牌 |类型 |引擎 |功率 (kW) |制造商 菲亚特 |蓬托 | 1.2-L | 44 |克莱斯勒如您所见,文件略有不同:第一列的名称和品牌,功率的不同计量单位,制造商的位置不同,文件 2 中缺少扭矩。
我想把它改成这样的:
public class Car {
string Name;
string Type;
Engine Engine;
}
public class Engine {
string Id;
string Manufacturer;
double Power;
Dictionary<string,string> OtherAttributes;
}
我认为转换也需要转换规则的类:
public class MappingRules {
string FileType; // File 1 vs File 2
List<MappingRule> MappingRules;
}
public class MappingRule<T> {
string SourceColumnName;
string Target;
ITranslate<T> Translator;
}
interface ITranslate<T> {
T Convert(T sourceValue);
}
我的问题是:我怎样才能做到这一点,但更重要的是:我该如何研究这个?
更新
我最终选择了一种对目标结构进行硬编码的方法(即Car 和Engine 类)。用户得到了一个工具,他可以根据文件类型将列映射到这些类的属性。然后翻译器将列中的值翻译为类中的属性。
【问题讨论】:
-
这至少是研究该主题的开始:en.wikipedia.org/wiki/Data_cleansing,但我希望它对手头的问题没有那么大的帮助。
标签: algorithm design-patterns transformation