【问题标题】:What does "Data Massage" mean?“数据按摩”是什么意思?
【发布时间】:2010-10-09 08:07:37
【问题描述】:

我正在阅读,如果我的应用程序不需要在发送到 SQL 之前处理数据,我会避免使用 internalStore。什么是数据按摩?

【问题讨论】:

    标签: c# .net asp.net sql database-design


    【解决方案1】:

    操纵、处理、改变、重新计算。简而言之,如果您只是移动原始数据,则无需使用 internalStore,但如果您在存储之前对其进行任何操作,那么您可能需要 internalStore。

    【讨论】:

    • 不,任何人都不应该隐含地信任任何类型的程序输入。然而,简单的检查可能不会被视为按摩,因为您没有接触数据 - 只是偷看它。
    • 确实如此。我的按摩经验几乎总是清理数据存储中已经存在的数据,这些数据是从我无法控制的另一个系统输入的。
    【解决方案2】:

    清理、规范化、过滤……只是以某种方式将数据从原始输入更改为更适合您使用的形式。

    【讨论】:

      【解决方案3】:

      有时移动数据的整个过程被称为“ETL”,意思是“提取、转换、加载”。按摩数据是“转换”步骤,但这意味着您必须进行临时修复以消除您遇到的问题(就像按摩对您的肌肉所做的那样),而不是在众所周知的格式之间进行转换。

      您可能会“按摩”数据的想法包括:

      • 将源系统发出的格式更改为目标系统期望的格式,例如将日期格式从 d/m/y 更改为 m/d/y。
      • 用默认值替换缺失值,例如未给出数量时提供“0”。
      • 过滤掉目标系统中不需要的记录。
      • 检查记录的有效性,并忽略或报告如果您尝试插入会导致错误的行。
      • 规范化数据以删除应该相同的变化,例如将大写替换为小写,将“01”替换为“1”。

      【讨论】:

        【解决方案4】:

        最后,当数据没有给出你想要的答案时,通过丢弃数据(或调整数字)来按摩数据,这是一种不那么有趣的做法。不幸的是,做统计分析的人经常对数据进行处理,以摆脱那些反驳他们理论的讨厌的异常值。由于这种做法将数据清理称为按摩数据是不恰当的。清理数据以使其可以进入您的系统(摆脱无意义的日期,例如 02/30/2009,因为其他人将它们存储在 varchar 中而不是日期,将名字和姓氏分隔到单独的字段中,修复所有大写数据, 在未提供提供的数据时为需要数据的字段添加默认值等)是一回事 - 按摩数据意味着不恰当地调整数据的做法。

        还要评论如果您不更改任何数据,那么拥有内部存储是不好的,我强烈不同意这一点(多年来我已经从数百个来源加载了数千个文件。在首先,几乎没有数据不需要至少检查以进行清理。如果第一次运行没问题,并不能保证一年后它不会将垃圾放入您的系统中。加载任何文件而不首先将其放入暂存表并清理它是不负责任的。

        此外,如果我们可以轻松查看加载到临时表中的文件的内容,我们会发现更容易研究数据问题。然后我们可以准确地确定哪个文件/源向我们提供了有问题的数据,这解决了许多客户认为我们加载了他们实际发送给我们加载的错误信息的问题。事实上,我们总是使用两个临时表,一个用于从文件中传入的原始数据,另一个用于清理之后但加载到生产表之前的数据。因此,如果我不得不返回并搜索原始文件,我可以在几秒钟或几分钟内解决问题,而这将需要几个小时。因为您可以保证的一件事是,如果您正在导入数据,则有时该数据的内容会受到质疑。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-05
          • 1970-01-01
          • 1970-01-01
          • 2011-08-12
          • 2017-06-11
          相关资源
          最近更新 更多