管理变通方法的最佳实践(针对损坏的数据)

时间:2013-06-29 11:22:27

标签: data-mining data-conversion data-quality

我必须使用政府提供的数据,这些数据有时会以奇怪的方式被破坏。我的代码已包含以下代码段:

for row in governmental_data:
    # XXX Workaround for that one row among thousands
    # that was mislabeled by a clerk and will not be fixed
    # before form A-320-Tango-5 is completed and submitted
    # on the first Sunday after a solstice.
    if row is the_spawn_of_satan:
        row = fix_row_A320(row)
    # XXX end of workaround
    process_row(row)
错误之前的

for row in governmental_data:
    process_row(row)

我无法使用已应用的修补程序对数据进行镜像,因为数据是动态的。

如果这些变通办法数量增加,我该怎么办?是否有任何最佳实践(除了“不提供破碎的数据开始”)?

1 个答案:

答案 0 :(得分:1)

我建议使用Decorator Design Pattern来处理此数据转换问题。 Wikipedia page 有一个咖啡制作的例子。以同样的方式,我建议每个数据转换应该是装饰器,它占用一行并对其进行一些操作并返回一行。这种设计模式很成熟。拦截过滤器设计模式类似于在java(servlet filters)和.net(Asp.Net Mvc Filters)中实现的这个想法。

您的代码应如下

listOfDataConversionFilters = [XXXWorkaround,formA_320Tango5,...]
for row in governmental_data:
    for filter in listOfDataConversionFilters
        filteredRow = filter(row)
    process_row(filteredRow)