草庐IT

谈谈12个最常见的数据质量问题及其来源

晓晓 2023-03-28 原文
据调查,56%的组织面临至少四种不同类型的数据质量问题,而71%的组织面临至少三种不同类型的问题。组织在设计数据质量框架和解决数据质量问题时花费了大量时间和资源。但要获得良好的结果,了解这些问题的确切性质并首先确定它们如何最终出现在系统中是很重要的。

什么是数据质量问题

数据质量问题是指数据集中存在无法容忍的缺陷,从而降低了该数据的可靠性和可信度。

跨不同来源存储的数据必然包含数据质量问题。由于多种原因,这些问题可能会被引入系统,例如人为错误、不正确的数据、过时的数据或组织中缺乏数据素养技能。由于数据为关键业务提供动力,因此此类问题可能会给公司带来一些严重的风险和损害。

在所有业务流程中利用高质量数据的需求非常明显。领导者正在投资招聘数据质量团队,因为他们想让人们负责获得和维持数据质量。并且设计了复杂的数据质量框架,采用先进的技术,确保数据质量管理快速准确。所有这些努力都是为了让清洁数据梦想成真。

但是,如果不首先了解是什么污染了数据以及它究竟来自何处,这一切都是不可能的。

​司面临的12大数据质量问题

问题#01:缺乏记录唯一性

一个拥有200-500名员工的普通组织使用大约123个SaaS应用程序。用于捕获、管理、存储和使用数据的应用程序数量庞大且种类繁多,是导致数据质量差的主要原因。在这种情况下最常见的问题是为同一实体存储多个记录。

例如,客户在购买过程中与品牌进行的所有互动都记录在数据库中的某个位置。这些记录可能来自网站、登陆页面表格、社交媒体广告、销售记录、账单记录、营销记录、购买点记录等领域。如果没有系统的方法来识别客户身份并将新信息与现有信息合并,最终可能会在整个数据集中出现重复信息。要修复重复,必须运行高级数据匹配算法来比较两个或多个记录并计算它们属于同一实体的可能性。

问题#02:缺乏关系约束

一个数据集通常引用多个数据。但是,当两个或多个不同的数据之间没有定义和强制执行任何关系时,最终可能会得到很多不正确和不完整的信息。

以这种情况为例:客户门户包含今年赢得的新业务以及从去年升级的现有客户的记录。除了基本客户信息外,肯定有一些客户字段仅适用于NewBusiness和一些仅适用于NewCustomer。可以使用相同的通用数据模型处理这两种情况,但它可能会导致许多数据质量问题,例如缺少必要的信息,以及客户记录中的模糊或不正确的信息。

要处理此类情况,应该始终创建特定的数据模型并加强它们之间的关系。通过在实体之间强制执行父/子(超类型/子类型)关系,可以使处理此信息的人员更好地捕获、更新和理解数据。需要将基本Customer字段与其子子类型(即NewBusiness和ExistingCustomer)分开。

问题#03:缺乏参照完整性

参照完整性意味着数据记录与其引用对应物是真实的。要了解由于缺乏参照完整性而产生的问题,我们考虑一家零售公司的例子。一家零售公司可能将他们的销售记录存储在Sales表中,每条记录都提到在进行销售时售出的产品。因此,可能希望在Sales表中找到销售ID和产品ID。但是,如果Sales记录引用Product表中不存在的ProductID,则很明显数据集缺乏引用完整性。

这些问题可能会导致团队创建不正确的报告、运送不正确的产品或将产品运送给不存在的客户等等。

问题#04:缺乏关系基数

关系基数是指两个实体之间可以拥有的最大关系数。通常,可以在数据对象之间创建不同类型的关系,这取决于公司允许如何进行业务交易。

参考以下示例以了解不同数据对象之间的基数,例如Customer、Purchase、Location和Product:

  • 一个客户一次只能有一个位置
  • 一个客户可以进行多次购买
  • 许多客户可以来自一个位置
  • 许多客户可以购买许多产品
如果基数约束没有明确定义,它可能会在数据集中引起许多数据质量问题。

问题#05:缺乏属性的唯一性和意义

我们经常发现与数据集属性或列相关的问题。很多时候数据模型没有明确定义,因此结果信息被认为是不可用的。发现的常见问题有:

  • 存在具有相同名称的多个列,其中包含一条记录的不同信息。
  • 存在具有不同名称的多个列,这在技术上意味着相同的事物,因此存储相同的信息。
  • 列标题不明确,会使数据输入操作者混淆要在列中存储的内容。
  • 有些列总是留空;要么是因为它们已被弃用,要么是没有获取此类信息的来源。
  • 有些列从未使用过,因此被不必要地存储。
所有这些场景都描述了数据集中的属性管理不善,并增加了数据质量问题的数量。

问题#06:缺乏验证约束

大多数数据质量问题都是由于缺乏验证约束造成的。验证约束确保数据值有效且合理,并根据定义的要求进行标准化和格式化。例如,缺少对CustomerName的验证约束检查会导致以下错误:

  • 名称中的额外空格(前导、尾随或中间的双空格),
  • 使用不适当的符号和字符,
  • 名称的长度太长,
  • 单字母中间名不大写或不以句号结尾,
  • 名字、中间名和姓氏的所有字母都大写,而不是仅将第一个字母大写。
此外,某些字段可能包含不正确的缩写和代码,或其他不属于属性域的值。如果这些约束未在数据模型中定义并在数据入口点上强制执行,最终会在数据集最关键和最基本的字段(例如客户姓名)中出现大量验证错误。

问题#07:缺乏准确的公式和计算

数据集中的许多字段是从其他字段派生或计算得出的。因此,每次在相关字段中输入或更新新数据时,都会设计、实施并自动执行公式。公式或计算中存在的任何错误都可能导致数据集的整个列中获得不正确的信息。这会使用于任何预期目的的字段无效。

根据其他字段计算的字段示例包括根据生日计算的年龄、根据购买的产品数量计算的适用折扣或任何其他百分比计算。

问题#08:跨来源缺乏一致性

与数据相关的最常见挑战之一是在所有节点或数据源中维护关于同一“事物”的一个定义。例如,如果一家公司使用CRM和一个单独的计费应用程序,则客户的记录将出现在这两个应用程序的数据库中。随着时间的推移,在所有数据库中保持一致的客户信息视图是一项艰巨的任务。

缺乏一致性可能会扰乱企业所有职能和运营的报告。一致性不仅与数据值的含义有关,还与它们的表示有关;例如,当值不适用或不可用时,必须使用一致的术语来表示所有来源的数据不可用。

问题#09:缺乏数据完整性

数据完整性是指数据集中存在必要的字段。数据集的完整性可以垂直(属性级别)或水平(记录级别)计算。通常,字段被标记为必填以确保数据集的完整性,因为并非所有字段都是必需的。

通常会在大量字段留空的数据集中发现此数据质量问题–大量记录。但空并不一定意味着不完整。数据集的完整性只能通过首先对数据模型的每个字段进行如下分类来准确衡量:

  • 字段是必填项吗?意思是,它不能留空;例如,客户的名称。
  • 该字段是可选的吗?意思是,它不一定需要填写;例如,客户的爱好字段。
  • 该字段在某些情况下不适用吗?意思是,根据记录的上下文,它变得无关紧要,应该留空;例如,未婚客户的配偶姓名。

问题#10:缺乏数据流通

数据老化得非常快——无论客户是否更换了他们的住址、电子邮件地址、联系电话等。此类更改可能会影响数据集的流通性,并导致产生数周或数月的旧数据,从而导致根据过时的信息做出关键决策。为确保数据集的流通性,可以设置提醒以更新数据,或对属性的年龄设置限制,确保所有值在给定时间内接受审查和更新。

问题#11:缺乏数据素养技能

尽管为保护数据及其跨数据集的质量做出了所有正确的努力,但组织中缺乏数据素养技能仍然会对数据造成很大的损害。员工经常存储错误的信息,因为他们不理解某些属性的含义。此外,他们不知道自己行为的后果,例如在某个系统或某个记录中更新数据会产生什么影响。

这种差异只能通过创建和设计数据素养计划和课程来消除,这些计划和课程向团队介绍组织数据并解释:

  • 它包含什么,
  • 每个数据属性的含义,
  • 其质量的可接受标准是什么,
  • 输入/操作数据的错误和正确方法是什么,
  • 使用什么数据来实现给定的结果。

问题#12:错误输入和其他人为错误

错误输入或拼写错误是最常见的数据质量错误来源之一。众所周知,人类在输入10,000个数据时至少会犯400个错误。这表明即使存在唯一标识符、验证检查和完整性约束,人为错误仍有可能产生并使数据质量下降。

有关谈谈12个最常见的数据质量问题及其来源的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  5. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  6. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  7. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  8. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  9. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  10. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

随机推荐