{"id":1246,"date":"2024-02-23T17:52:20","date_gmt":"2024-02-23T16:52:20","guid":{"rendered":"https:\/\/staging.sql.marcus-belz.de\/?p=1246"},"modified":"2026-05-07T01:55:12","modified_gmt":"2026-05-06T23:55:12","slug":"datenqualitat-in-einem-etl-prozess","status":"publish","type":"post","link":"https:\/\/staging.sql.marcus-belz.de\/?p=1246","title":{"rendered":"Datenqualit\u00e4t in einem ETL-Prozess"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">Inhalt<\/h1>\n\n\n\n<h1 class=\"wp-block-heading\">\u00dcberblick<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#AnchorOverview\">\u00dcberblick<\/a><\/li>\n\n\n\n<li><a href=\"#AnchorCheckTechnicalDataQuality\">Pr\u00fcfung der technischen Datenqualit\u00e4t<\/a><\/li>\n\n\n\n<li><a href=\"#AnchorCheckBusinesDataQuality\">Pr\u00fcfung der fachlichen Datenqualit\u00e4t<\/a><\/li>\n\n\n\n<li>Protokollierung aller gefundener Fehler<\/li>\n\n\n\n<li>Markierung fehlerhafter gelieferter Daten<\/li>\n\n\n\n<li>Ausschluss von Datens\u00e4tzen mit Datenfehlern von der weiteren Verarbeitung<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AnchorOverview\">\u00dcberblick<\/h2>\n\n\n\n<p>Es gibt zahlreiche gute Fachliteratur zu dem Thema Datenqualit\u00e4t. In der Regel wird das Thema eher theoretisch beschrieben, mit eindrucksvollen Beispielen und die Wichtigkeit mit Theorien belegt. Eine konkrete Anleitung jedoch, wie genau die Pr\u00fcfung und Behandlung schlechter Daten in einem ETL-Prozess zu implementieren ist, habe ich allerdings noch nicht gefunden.  <\/p>\n\n\n\n<p>Hierbei gibt es im Wesentlichen zwei Aspekte, die zu ber\u00fccksichtigen sind: Unter technischen Gesichtspunkten ist zun\u00e4chst zu pr\u00fcfen, ob die extrahierten Daten in die Datentypen des Zielsystems konvertiert werden k\u00f6nnen und m\u00f6glichen Beschr\u00e4nkungen wie zum Beispiel Wertebereichen und Schreibweise entsprechen. Aus fachlicher Sicht geht es eher darum, die Vollst\u00e4ndigkeit, Konsistenz und Aktualit\u00e4t der Daten sicherzustellen. Diese Eigenschaften werden oft auch unter dem Begriff <em>Datenintegrit\u00e4t <\/em>zusammengefasst. <\/p>\n\n\n\n<p>In Anlehnung an diese Unterscheidung fasse ich diese beiden Aspekte unter den Begriffen <strong>Technische Datenqualit\u00e4t <\/strong>und <strong>Fachliche Datenqualit\u00e4t <\/strong>zusammen.<\/p>\n\n\n\n<p>Die Pr\u00fcfung der fachlichen und technischen Datenqualit\u00e4t stellt sicher, dass die gelieferten sicher verarbeitet und in das Zielsystem \u00fcbernommen werden k\u00f6nnen. Technische und fachliche Fehler k\u00f6nnen beim Laden der verarbeiteten Daten in das Zielsystem zu einem Fehler und im schlimmsten Fall zu einem Abbruch des ETL-Prozesses f\u00fchren. Ein ETL-Prozess sollte so entwickelt sein, dass technische und fachliche Datenfehler proaktiv identifiziert, protokolliert und behandelt werden. Im Zweifel sind fehlerhafte Daten nicht in das Zielsystem zu \u00fcbernehmen. Um einen solchen zu entwickeln sind die folgenden Aufgaben zu erledigen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#AnchorCheckTechnicalDataQuality\">Pr\u00fcfung der technischen Datenqualit\u00e4t<\/a><\/li>\n\n\n\n<li><a href=\"#AnchorCheckBusinesDataQuality\">Pr\u00fcfung der fachlichen Datenqualit\u00e4t<\/a><\/li>\n\n\n\n<li>Protokollierung aller gefundener Fehler<\/li>\n\n\n\n<li>Markierung fehlerhafter gelieferter Daten<\/li>\n\n\n\n<li>Ausschluss von Datens\u00e4tzen mit Datenfehlern von der weiteren Verarbeitung<\/li>\n<\/ul>\n\n\n\n<p>Mit dieser Artikelserie werde ich ein Design Pattern f\u00fcr einen ETL-Prozess vorstellen, in dem die genannten Aufgaben mit einem vertretbarem Aufwand erledigt werden k\u00f6nnen. Die technische Grundlagen sind in dem Artikel <a href=\"http:\/\/Design Pattern \/\/ Architektur eines ETL-Prozesses\">Design Pattern \/\/ Architektur eines ETL-Prozesses<\/a> beschrieben. Die konkrete Umsetzung wird in einem separaten Artikel (upcoming) beschrieben.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"AnchorCheckTechnicalDataQuality\">Pr\u00fcfung der technischen Datenqualit\u00e4t<\/h1>\n\n\n\n<p>Bei der Pr\u00fcfung der technischen Datenqualit\u00e4t geht es darum sicherzustellen, dass die zu verarbeitenden Daten in die jeweiligen Zieldatentypen konvertiert werden k\u00f6nnen, in denen diese ben\u00f6tigt werden. Dieses ist insbesondere dann notwendig, wenn die zu verarbeitenden Daten &#8211; untypisiert &#8211; aus einer Text-Datei (CSV, XML, JSON) oder sogar EXCEL) gelesen werden m\u00fcssen. Voraussetzung ist eine sichere Typ-Konvertierung, die nicht zu einem Abbruch des ETL-Prozesses f\u00fchrt. Gleichzeitig soll das Ergebnis der Konvertierung eine proaktive Identifikation von Problemen bei der Konvertierung und damit mit den Daten erm\u00f6glichen. <\/p>\n\n\n\n<p>Die Grundlagen der sicheren Typ-Konvertierung sind in den <a href=\"#AnchorRelatedPostsSaveTypeConversion\"><strong>TRY_CONVERT<\/strong>-Artikeln<\/a> beschrieben. Die Pr\u00fcfung der technischen Datenqualit\u00e4t kann durch einfache Abfragen auf den konvertierten Daten erfolgen. Im Wesentlichen wird auf jeder Spalte einer, die einen konvertierten Wert enth\u00e4lt, eine WHERE-Klauseln ausgef\u00fchrt. Liefern die WHERE-Klauseln Daten zur\u00fcck, handelt es sich um Konvertierungsfehler. Alle gefunden Fehler sind in einer Fehlertabelle zu protokollieren.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"AnchorCheckBusinesDataQuality\">Pr\u00fcfung der fachlichen Datenqualit\u00e4t<\/h1>\n\n\n\n<p>Die Pr\u00fcfung der fachlichen Datenqualit\u00e4t ist grunds\u00e4tzlich eine komplexe Aufgabe. Aber wie so oft, kann bereits mit einfachen Ma\u00dfnahmen die Qualit\u00e4t erheblich verbessert werden. Eine erste Pr\u00fcfung kann auf den extrahierten Daten durchgef\u00fchrt werden. Weitere Pr\u00fcfungen sind sind nach der Transformation der Daten durchzuf\u00fchren.<\/p>\n\n\n\n<p>Auch hier kann die bereits oben beschrieben grundlegende Vorgehensweise &#8211; Identifikation \u00fcber WHERE-Klauseln und Protokollierung von Datenfehlern &#8211; angewendet werden.     <\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"AnchorRelatedPosts\">Verwandte Artikel<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AnchorRelatedPostsBasics\">Grundlagen<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1268\">Design Pattern \/\/ Architektur eines ETL-Prozesses<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1246\">Datenqualit\u00e4t in einem ETL-Prozess<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1181\">Datenqualit\u00e4t \/\/ Grundlagen der Typ-Konvertierung mit T-SQL<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"AnchorRelatedPostsSaveTypeConversion\">Sichere Typ-Konvertierung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1534\">Datenqualit\u00e4t \/\/ Konvertierung nach bigint, int, smallint, tinyint<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1547\">Datenqualit\u00e4t \/\/ Konvertierung nach decimal oder numeric<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1580\">Datenqualit\u00e4t \/\/ Konvertierung nach money, smallmoney<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1629\">Datenqualit\u00e4t \/\/ Konvertierung nach float, real<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1656\">Datenqualit\u00e4t \/\/ Konvertierung nach bit<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1680\">Datenqualit\u00e4t \/\/ Konvertierung nach date, datetime, datetime2, time<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Inhalt \u00dcberblick \u00dcberblick Es gibt zahlreiche gute Fachliteratur zu dem Thema Datenqualit\u00e4t. In der Regel wird das Thema eher theoretisch beschrieben, mit eindrucksvollen Beispielen und die Wichtigkeit mit Theorien belegt. Eine konkrete Anleitung jedoch, wie genau die Pr\u00fcfung und Behandlung schlechter Daten in einem ETL-Prozess zu implementieren ist, habe ich allerdings noch nicht gefunden. Hierbei &#8230; <a title=\"Datenqualit\u00e4t in einem ETL-Prozess\" class=\"read-more\" href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1246\" aria-label=\"Mehr Informationen \u00fcber Datenqualit\u00e4t in einem ETL-Prozess\">Weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,5],"tags":[45,39,31],"class_list":["post-1246","post","type-post","status-publish","format-standard","hentry","category-all-languages","category-german","tag-datenqualitat","tag-design-pattern","tag-etl-process"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Datenqualit\u00e4t in einem ETL-Prozess - Just another SQL blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/staging.sql.marcus-belz.de\/?p=1246\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Datenqualit\u00e4t in einem ETL-Prozess - Just another SQL blog\" \/>\n<meta property=\"og:description\" content=\"Inhalt \u00dcberblick \u00dcberblick Es gibt zahlreiche gute Fachliteratur zu dem Thema Datenqualit\u00e4t. In der Regel wird das Thema eher theoretisch beschrieben, mit eindrucksvollen Beispielen und die Wichtigkeit mit Theorien belegt. Eine konkrete Anleitung jedoch, wie genau die Pr\u00fcfung und Behandlung schlechter Daten in einem ETL-Prozess zu implementieren ist, habe ich allerdings noch nicht gefunden. Hierbei ... Weiterlesen\" \/>\n<meta property=\"og:url\" content=\"https:\/\/staging.sql.marcus-belz.de\/?p=1246\" \/>\n<meta property=\"og:site_name\" content=\"Just another SQL blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-23T16:52:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-06T23:55:12+00:00\" \/>\n<meta name=\"author\" content=\"marcus\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschrieben von\" \/>\n\t<meta name=\"twitter:data1\" content=\"marcus\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246\"},\"author\":{\"name\":\"marcus\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#\\\/schema\\\/person\\\/98ab042e47d7286f64530ee18f20f675\"},\"headline\":\"Datenqualit\u00e4t in einem ETL-Prozess\",\"datePublished\":\"2024-02-23T16:52:20+00:00\",\"dateModified\":\"2026-05-06T23:55:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246\"},\"wordCount\":660,\"keywords\":[\"Datenqualit\u00e4t\",\"Design Pattern\",\"ETL-Process\"],\"articleSection\":[\"All Languages\",\"German\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246\",\"name\":\"Datenqualit\u00e4t in einem ETL-Prozess - Just another SQL blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#website\"},\"datePublished\":\"2024-02-23T16:52:20+00:00\",\"dateModified\":\"2026-05-06T23:55:12+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#\\\/schema\\\/person\\\/98ab042e47d7286f64530ee18f20f675\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?p=1246#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Datenqualit\u00e4t in einem ETL-Prozess\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#website\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/\",\"name\":\"Just another SQL blog\",\"description\":\"Marcus Belz \u00b7 SQL Server \u00b7 ETL \u00b7 Datenqualit\u00e4t\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/#\\\/schema\\\/person\\\/98ab042e47d7286f64530ee18f20f675\",\"name\":\"marcus\",\"url\":\"https:\\\/\\\/staging.sql.marcus-belz.de\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Datenqualit\u00e4t in einem ETL-Prozess - Just another SQL blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/staging.sql.marcus-belz.de\/?p=1246","og_locale":"de_DE","og_type":"article","og_title":"Datenqualit\u00e4t in einem ETL-Prozess - Just another SQL blog","og_description":"Inhalt \u00dcberblick \u00dcberblick Es gibt zahlreiche gute Fachliteratur zu dem Thema Datenqualit\u00e4t. In der Regel wird das Thema eher theoretisch beschrieben, mit eindrucksvollen Beispielen und die Wichtigkeit mit Theorien belegt. Eine konkrete Anleitung jedoch, wie genau die Pr\u00fcfung und Behandlung schlechter Daten in einem ETL-Prozess zu implementieren ist, habe ich allerdings noch nicht gefunden. Hierbei ... Weiterlesen","og_url":"https:\/\/staging.sql.marcus-belz.de\/?p=1246","og_site_name":"Just another SQL blog","article_published_time":"2024-02-23T16:52:20+00:00","article_modified_time":"2026-05-06T23:55:12+00:00","author":"marcus","twitter_card":"summary_large_image","twitter_misc":{"Geschrieben von":"marcus","Gesch\u00e4tzte Lesezeit":"3\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=1246#article","isPartOf":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=1246"},"author":{"name":"marcus","@id":"https:\/\/staging.sql.marcus-belz.de\/#\/schema\/person\/98ab042e47d7286f64530ee18f20f675"},"headline":"Datenqualit\u00e4t in einem ETL-Prozess","datePublished":"2024-02-23T16:52:20+00:00","dateModified":"2026-05-06T23:55:12+00:00","mainEntityOfPage":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=1246"},"wordCount":660,"keywords":["Datenqualit\u00e4t","Design Pattern","ETL-Process"],"articleSection":["All Languages","German"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=1246","url":"https:\/\/staging.sql.marcus-belz.de\/?p=1246","name":"Datenqualit\u00e4t in einem ETL-Prozess - Just another SQL blog","isPartOf":{"@id":"https:\/\/staging.sql.marcus-belz.de\/#website"},"datePublished":"2024-02-23T16:52:20+00:00","dateModified":"2026-05-06T23:55:12+00:00","author":{"@id":"https:\/\/staging.sql.marcus-belz.de\/#\/schema\/person\/98ab042e47d7286f64530ee18f20f675"},"breadcrumb":{"@id":"https:\/\/staging.sql.marcus-belz.de\/?p=1246#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/staging.sql.marcus-belz.de\/?p=1246"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/staging.sql.marcus-belz.de\/?p=1246#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/staging.sql.marcus-belz.de\/"},{"@type":"ListItem","position":2,"name":"Datenqualit\u00e4t in einem ETL-Prozess"}]},{"@type":"WebSite","@id":"https:\/\/staging.sql.marcus-belz.de\/#website","url":"https:\/\/staging.sql.marcus-belz.de\/","name":"Just another SQL blog","description":"Marcus Belz \u00b7 SQL Server \u00b7 ETL \u00b7 Datenqualit\u00e4t","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/staging.sql.marcus-belz.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/staging.sql.marcus-belz.de\/#\/schema\/person\/98ab042e47d7286f64530ee18f20f675","name":"marcus","url":"https:\/\/staging.sql.marcus-belz.de\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts\/1246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1246"}],"version-history":[{"count":10,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts\/1246\/revisions"}],"predecessor-version":[{"id":1812,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=\/wp\/v2\/posts\/1246\/revisions\/1812"}],"wp:attachment":[{"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/staging.sql.marcus-belz.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}