我正在做一些阅读,如果我的应用程序在发送到SQL之前不需要按摩数据,就会避免使用internalStore。什么是数据按摩?
操纵,处理,改变,重新计算。简而言之,如果您只是在原始数据中移动数据,则无需使用internalStore,但如果您在存储之前对其执行任何操作,那么您可能需要internalStore。
有时,移动数据的整个过程称为“ETL”,意思是“提取,转换,加载”。按摩数据是“转换”步骤,但它意味着你必须做的临时修复,以消除你遇到的问题(如按摩对你的肌肉),而不是众所周知的格式之间的转换。
认为你可以做的“按摩”数据包括:
清理,规范化,过滤,......只是将数据从原始输入以某种方式更改为更适合您使用的形式。
最后,当他们没有给你你想要的答案时,通过丢弃数据(或调整数字)来按摩数据的做法较少。不幸的是,进行统计分析的人经常按摩数据,以摆脱那些反驳他们理论的讨厌的异常值。由于这种做法涉及数据清理,因为按摩数据是不合适的。清理数据使其成为可以进入系统的东西(摆脱无意义的日期,如02/30/2009,因为其他人将它们存储在varchar而不是日期中,将名字和姓氏分隔成单独的字段,修复所有大写数据,在没有提供所提供的数据时,为需要数据的字段添加默认值等等是一回事 - 按摩数据意味着不恰当地调整数据的做法。
如果您没有更改任何数据,还要评论内部存储是不好的想法,我强烈不同意这一点(多年来我已经从数百个来源加载了数千个文件。首先,几乎没有任何数据不需要至少进行清洁检查。如果在第一次运行中没问题,则不保证一年之后它不会将垃圾放入您的系统。加载任何文件没有先将它放入临时表并清洁它是完全不负责任的。
如果我们可以轻松地看到我们在登台表中加载的文件的内容,我们发现更容易研究数据问题。然后我们可以确切地确定哪个文件/来源为我们提供了有问题的数据,这解决了许多问题,即客户认为我们加载了他们实际发送给我们加载的错误信息。事实上,我们总是使用两个临时表,一个用于原始数据,一个用于文件,另一个用于清理后但在加载到生产表之前的数据。因此,如果我必须返回并搜索原始文件,我可以在几秒钟或几分钟内解决问题,这可能需要数小时。因为您可以保证的一件事是,如果您要导入数据,有时会质疑该数据的内容。