The Nine Circles of Data Quality Hell

Data Architecture 2010. 8. 13. 16:28

“Abandon all hope, ye who enter here.” 

In Dante’s Inferno, these words are inscribed above the entrance into hell.  The Roman poet Virgil was Dante’s guide through its nine circles, each an allegory for unrepentant sins beyond forgiveness.

The Very Model of a Modern DQ General will be your guide on this journey through nine of the most common mistakes that can doom your data quality project:


1. Thinking data quality is an IT issue (or a business issue) - Data quality is not an IT issue.  Data quality is also not a business issue.  Data quality is everyone's issue.  Successful data quality projects are driven by an executive management mandate for the business and IT to forge an ongoing and iterative collaboration throughout the entire project.  The business usually owns the data and understands its meaning and use in the day to day operation of the enterprise and must partner with IT in defining the necessary data quality standards and processes.


2. Waiting for poor data quality to affect you - Data quality projects are often launched in the aftermath of an event when poor data quality negatively impacted decision-critical enterprise information.  Some examples include a customer service nightmare, a regulatory compliance failure or a financial reporting scandal.  Whatever the triggering event, a common response is data quality suddenly becomes prioritized as a critical issue.


3. Believing technology alone is the solution - Although incredible advancements continue, technology alone cannot provide the solution.  Data quality requires a holistic approach involving people, process and technology.  Your project can only be successful when people take on the challenge united by collaboration, guided by an effective methodology, and of course, implemented with amazing technology.


4. Listening only to the expert - An expert can be an invaluable member of the data quality project team.  However, sometimes an expert can dominate the decision making process.  The expert's perspective needs to be combined with the diversity of the entire project team in order for success to be possible.


5. Losing focus on the data - The complexity of your data quality project can sometimes work against your best intentions.  It is easy to get pulled into the mechanics of documenting the business requirements and functional specifications and then charging ahead with application development.  Once the project achieves some momentum, it can take on a life of its own and the focus becomes more and more about making progress against the tasks in the project plan, and less and less on the project's actual goal, which is to improve the quality of your data.

  • This common mistake was the theme of my post: Data Gazers.

6. Chasing perfection - An obsessive-compulsive quest to find and fix every data quality problem is a laudable pursuit but ultimately a self-defeating cause.  Data quality problems can be very insidious and even the best data quality process will still produce exceptions.  Although this is easy to accept in theory, it is notoriously difficult to accept in practice.  Do not let the pursuit of perfection undermine your data quality project.


7. Viewing your data quality assessment as a one-time event - Your data quality project should begin with a data quality assessment to assist with aligning perception with reality and to get the project off to a good start by providing a clear direction and a working definition of success.  However, the data quality assessment is not a one-time event that ends when development begins.  You should perform iterative data quality assessments throughout the entire development lifecycle.


8. Forgetting about the people - People, process and technology.  All three are necessary for success on your data quality project.  However, I have found that the easiest one to forget about (and by far the most important of the three) is people.


9. Assuming if you build it, data quality will come - There are many important considerations when planning a data quality project.  One of the most important is to realize that data quality problems cannot be permanently “fixed" by implementing a one-time "solution" that doesn't require ongoing improvements.


Knowing these common mistakes is no guarantee that your data quality project couldn't still find itself lost in a dark wood.

However, knowledge could help you realize when you have strayed from the right road and light a path to find your way back.


출처 : http://www.ocdqblog.com/home/the-nine-circles-of-data-quality-hell.html



Data Quality와 관련하여 쓰여진 글인데, 한번쯤 읽고 생각해보고 넘어가는 것도 좋을법한 내용이라 옮겨봅니다. ^^

'Data Architecture' 카테고리의 다른 글

Power Designer와 ERWin의 비교  (0) 2012.02.16
12인이 말하는 ‘아키텍트의 길’  (0) 2010.11.05
OLAP의 정의와 활용  (0) 2010.09.15
:     

TISTORY에 Login하려면 여기를 누르세요.


오리진이 되라

Happening 2010. 8. 13. 16:11

오리진이 되라

강신장 지음
쌤앤파커스 2010.06.03
펑점

강신장 사장님께서 집필하신 "오리진이 되라"라는 책입니다.


얼마전에 구매해서 읽었는데요. 참 많은 생각을 하게 하는 책인듯 합니다.


강신장 사장님이 삼성경제연구소(SERI)에서 다년간 지식경영실장으로 있으면서 기업 CEO 대상으로 창의력 개발 프로그램을


운영한 노하우를 바탕으로 집필되었습니다.


개인적으로 이 책을 한마디로 표현해보자면, "어떤 제품을 만드는데 있어서 철학을 가지고 있는가?"라고 정리해봅니다.


요즘과 같은 시기를 흔히 Digital Convergence 시대라고들 합니다. 이런 Convergence는 단순히 기술력을 통해서만 이루어내는


것이 아니라, 다양한 분야에 대한 통찰과 융합으로 이루어지는 것이라고 설명해줄 수 있는 책입니다.


책 내용도 어렵지 않고, 문장 또한 대화체(?) 같이 쉽게 쓰여져 있으니, 가볍게 읽을 수 있습니다.


책은 가볍게 읽을 수 있지만, 독서 후의 여운은 가볍지 않음을 느낄 수 있을듯~ ^^

:     

TISTORY에 Login하려면 여기를 누르세요.


Create View 생성 Query문의 오류

Oracle 2010. 8. 13. 16:09
어제 개발자분이 이전까지는 동일한 Create View Query문으로 Error 없이 잘 생성해서 사용해 왔는데,

Oracle 11g R2에서 동일한 Query문을 가져다 하니, Error가 발생하면서 View가 생성이 안된다고 하더군요.

그래서, Create View Query문을 받아서 확인해봤습니다.

눈으로만 딱 보니, Group By절에 Define되어 있는 Column이 Select 절에는 존재하지 않았습니다.

예를 들면 아래와 같은 형식이지요.

select  ename, job, mgr
from     emp
group  ename, job;

대부분 위의 Query문을 보고, 아 mgr Column에 대해서 집계 함수를 이용해서 표시를 해주거나,

Group by 절에 mgr을 포함시켜주어야 겠구나 하는 생각이 드실 것입니다.

하지만, 아래와 같은 경우에서 그 생각이 산산히 부서집니다. (동일한 형태로 SCOTT 계정을 이용해서 재현해보았습니다.)


============================================================================================================
1. 아래와 같이 scott 계정의 emp Table을 Hiredate column을 참조하는 View를 하나 생성합니다.

SCOTT@david11gR1>create or replace view v_emp_hiredate
  2  (hiredttm, hiredate, hiretime)
  3  as
  4  select hiredate, to_char(hiredate,'yyyymmdd') as hiredate, to_char(hiredate, 'hh24:mi:ss') as hitetime
  5  from emp
  6  with read only;

뷰가 생성되었습니다.

2. 생성된 View가 정상적으로 잘 작동하는지 확인해 봅니다.

SCOTT@david11gR1>select * from v_emp_hiredate;

HIREDTTM HIREDATE HIRETIME
-------- -------- --------
80/12/17 19801217 00:00:00
81/02/20 19810220 00:00:00
81/02/22 19810222 00:00:00
81/04/02 19810402 00:00:00
81/09/28 19810928 00:00:00
81/05/01 19810501 00:00:00
81/06/09 19810609 00:00:00
87/04/19 19870419 00:00:00
81/11/17 19811117 00:00:00
81/09/08 19810908 00:00:00
87/05/23 19870523 00:00:00
81/12/03 19811203 00:00:00
81/12/03 19811203 00:00:00
82/01/23 19820123 00:00:00

14 개의 행이 선택되었습니다.


3. 위와 같이 정상적으로 생성된 View를 참조하는 다른 View를 생성합니다.
    (Group By 절에서 의도적으로 hiredttm만 define하고, hiredate와 hiretime은 누락시킵니다.)

SCOTT@david11gR1>create or replace view v_test
  2  (hiredttm, hiredate, hiretime, tot)
  3  as
  4  select hiredttm, hiredate, hiretime, count(0) as tot
  5  from v_emp_hiredate
  6  group by hiredttm
  7  with read only;

뷰가 생성되었습니다.

Select 절의 구문 오류로 인해서 Error가 발생하면서, View가 생성되지 않을 줄 알았는데,
정상적으로 생성이 됩니다.

그래서, Data는 정상적으로 되는지 조회해 봅니다.

SCOTT@david11gR1>select * from v_test;

HIREDTTM HIREDATE HIRETIME        TOT
-------- -------- -------- ----------
80/12/17 19801217 00:00:00          1
81/02/20 19810220 00:00:00          1
81/02/22 19810222 00:00:00          1
81/04/02 19810402 00:00:00          1
81/05/01 19810501 00:00:00          1
81/06/09 19810609 00:00:00          1
81/09/08 19810908 00:00:00          1
81/09/28 19810928 00:00:00          1
81/11/17 19811117 00:00:00          1
81/12/03 19811203 00:00:00          2
82/01/23 19820123 00:00:00          1
87/04/19 19870419 00:00:00          1
87/05/23 19870523 00:00:00          1

13 개의 행이 선택되었습니다.

결과상에 문제 없이 정상적으로 조회가 되었습니다.

============================================================================================================



이 현상은 Oracle 11gR1이하 버전에서 동일하게 나타납니다. (Oracle 8i, 9i, 10g, 11gR1 여기까지만 확인해봄)

그래서 이번에는 위와 동일한 내용으로 Oracle 11gR2에서 확인해보도록 하겠습니다.

============================================================================================================

1. 먼저 위의 테스트와 동일하게 scott 계정의 emp Table을 Hiredate column을 참조하는 View를 하나 생성합니다.
SCOTT@david11gR2>create or replace view v_emp_hiredate
  2  (hiredttm, hiredate, hiretime)
  3  as
  4  select hiredate, to_char(hiredate,'yyyymmdd') as hiredate, to_char(hiredate, 'hh24:mi:ss') as hitetime
  5  from emp
  6  with read only;

뷰가 생성되었습니다.

2. 이제 문제의 View를 생성해봅니다.
SCOTT@david11gR2>create or replace view v_test
  2  (hiredttm, hiredate, hiretime, tot)
  3  as
  4  select hiredttm, hiredate, hiretime, count(0) as tot
  5  from v_emp_hiredate
  6  group by hiredttm
  7  with read only;
select hiredttm, hiredate, hiretime, count(0) as tot
                 *
4행에 오류:
ORA-00979: GROUP BY 표현식이 아닙니다.

우리가 일반적으로 생각하던 오류를 발생시키면서, View를 생성하지 못합니다.

============================================================================================================

왜 이와 같은 현상이 발생하는지 그에 대한 명확한 원인은 모르겠습니다.

단순히, Oracle의 Bug일까요?? 아니면, hiredate와 hiretime의 값 자체가 emp.hiredate의 값으로 부터 파생된 값이기

때문에 이를 Check할 필요가 없다고 판단한 것일까요?? (이건 좀 억지스럽군요)

아무튼 Oracle 11g R2의 Compiler는 좀 더 똑똑해진듯 합니다. 우리의 생각처럼 제대로 오류를 발생시켜주니 말이죠.

혹시라도, 위의 증상에 대해서 원인을 설명해주실 수 있으신 분이 있으시면 답변 부탁드리겠습니다.
:     

TISTORY에 Login하려면 여기를 누르세요.