분석을 위한 인기 있는 데이터 유효성 검사 기술 및 이것이 필요한 이유
게시 됨: 2022-12-19편집자 주: 이 기사는 원래 2020년 12월 14일 Iteratively 블로그에 게시되었습니다.
결국 데이터 분석은 다른 코드와 마찬가지로 테스트되어야 합니다. 이 코드와 코드가 생성하는 데이터를 검증하지 않으면 비용이 많이 들 수 있습니다(Gartner에 따르면 연간 970만 달러의 비용이 듭니다).
이러한 운명을 피하기 위해 회사와 엔지니어는 다양한 사전 대응 및 사후 데이터 검증 기술을 활용할 수 있습니다. 아래에서 설명하겠지만 전자를 적극 권장합니다. 데이터 유효성 검사에 대한 사전 예방적 접근 방식은 회사가 보유하고 있는 데이터가 깨끗하고 작업할 준비가 되었는지 확인하는 데 도움이 됩니다.
사후 대 능동적 데이터 검증 기술: 데이터 문제가 문제가 되기 전에 해결
"1 온스의 예방은 1 파운드의 치료 가치가 있습니다." 분석을 위한 데이터 유효성 검사 기술을 포함하여 거의 모든 상황에서 사실이라는 오래된 속담입니다. 또 다른 표현은 사후 대응보다 능동적인 것이 더 낫다는 것입니다.
모든 데이터 유효성 검사의 목적은 데이터가 부정확하거나 일관성이 없거나 불완전하거나 누락된 부분을 식별하는 것입니다.
정의에 따라 반응적 데이터 유효성 검사는 사후에 수행되며 이상 탐지를 사용하여 데이터에 있을 수 있는 모든 문제를 식별하고 잘못된 데이터의 증상을 완화하는 데 도움을 줍니다. 이러한 방법이 없는 것보다는 낫지만 처음부터 잘못된 데이터를 유발하는 핵심 문제를 해결하지는 못합니다.
대신, 우리는 팀이 얻은 데이터가 정확하고 완전하며 예상 구조에 있는지 확인하기 위해 유형 안전 및 도식화와 같은 분석을 위한 능동적인 데이터 유효성 검사 기술을 수용해야 한다고 생각합니다. 나쁜 분석 코드와 씨름).
보다 포괄적인 유효성 검사 접근 방식을 선택하는 것이 당연해 보일 수 있지만 많은 팀이 반응성 데이터 유효성 검사를 사용하게 됩니다. 여기에는 여러 가지 이유가 있을 수 있습니다. 종종 분석 코드는 많은 비데이터 팀의 사후 고려 사항이므로 테스트되지 않은 상태로 남아 있습니다.
안타깝게도 데이터가 유효성 검사 없이 처리되는 경우도 일반적입니다. 또한 부실한 분석 코드는 보고서가 심각하게 잘못되었거나 심지어 누락된 것을 누군가가 알아차린 몇 주 후와 같이 매우 나쁠 때만 발견됩니다.
사후 데이터 유효성 검사 기술은 dbt 또는 Dataform과 같은 도구를 사용하여 웨어하우스의 데이터를 변환하는 것처럼 보일 수 있습니다.
이러한 모든 방법이 데이터 문제를 해결하는 데 도움이 될 수 있지만(종종 객관적으로 훌륭한 도구 사용) 불량 데이터의 핵심 원인(예: 프로젝트에서 구현되는 단편적인 데이터 거버넌스 또는 분석)을 해결하는 데는 여전히 도움이 되지 않습니다. 팀 간 의사소통 없이 프로젝트별로) 처음부터 매번 그들에게 다시 오게 합니다.
반응적 데이터 검증만으로는 충분하지 않습니다. 진정한 효과를 발휘하고 앞에서 언급한 비용이 많이 드는 문제를 방지하려면 사전 예방적 데이터 검증 기술을 사용해야 합니다. 이유는 다음과 같습니다.
- 데이터는 팀 스포츠입니다. 데이터가 깨끗한지 확인하는 것은 한 부서 또는 한 개인에게만 국한되지 않습니다. 고품질 데이터를 보장하고 문제가 발생하기 전에 해결하려면 모든 사람이 협력해야 합니다.
- 데이터 유효성 검사는 소프트웨어 개발 수명 주기(SDLC)의 일부여야 합니다. 이를 SDLC에 통합하고 기존 테스트 기반 개발 및 자동화된 QA 프로세스와 병렬로(나중에 추가하는 대신) 나중에 문제를 해결하는 대신 데이터 문제를 방지하여 시간을 절약할 수 있습니다.
- 사전 예방적 데이터 검증은 기존 도구 및 CI/CD 파이프라인에 통합될 수 있습니다. 개발 팀은 이미 테스트 자동화에 투자했으며 이제 신속하게 확장하여 분석 적용 범위를 추가할 수 있기 때문에 이는 개발 팀에게 쉽습니다.
- 능동적인 데이터 검증 테스트는 빠르게 움직이는 팀이 효율적으로 운영할 수 있는 가장 좋은 방법 중 하나입니다. 이를 통해 신속하게 반복하고 데이터 드리프트 및 기타 다운스트림 문제를 피할 수 있습니다.
- 능동적 데이터 유효성 검사를 통해 필요에 따라 코드를 변경하고 업데이트할 수 있으며 나중에 제거해야 하는 버그의 수를 최소화할 수 있습니다. 이 사전 예방적 프로세스는 귀하와 귀하의 팀이 관심 있는 데이터와 직접 관련된 코드만 변경하도록 합니다.
사전 예방적 데이터 유효성 검사가 중요한 이유를 확인했으므로 다음 질문은 어떻게 수행합니까? 문제가 발생하기 전에 데이터가 양호한지 확인하기 위해 팀에서 사용하는 도구와 방법은 무엇입니까?
다이빙하자.
데이터 검증 방법
데이터 유효성 검사는 특정 지점에서 발생하는 한 단계가 아닙니다. 데이터 수명 주기의 여러 지점(클라이언트, 서버, 파이프라인 또는 웨어하우스 자체)에서 발생할 수 있습니다.
실제로 여러 가지 면에서 대규모로 작성된 소프트웨어 테스팅과 매우 유사합니다. 그러나 한 가지 중요한 차이점이 있습니다. 출력만 테스트하는 것이 아닙니다. 또한 데이터 입력이 올바른지 확인합니다.
각 위치에서 데이터 유효성 검사가 어떤 모습인지 살펴보고 어떤 것이 반응적이고 어떤 것이 능동적인지 살펴보겠습니다.
클라이언트의 데이터 유효성 검사 기술
Amplitude Data와 같은 도구를 사용하여 유형 안전성, 단위 테스트 및 클라이언트 측 데이터 유효성 검사를 위한 Linting(정적 코드 분석)을 활용할 수 있습니다.
이제 이것은 훌륭한 출발점이지만 이러한 종류의 도구를 사용하여 이 계층에서 어떤 종류 의 테스트를 수행할 수 있는지 이해하는 것이 중요합니다. 분석은 다음과 같습니다.
- 형식 안전성 은 컴파일러가 소스에서 데이터 형식 및 구현 지침의 유효성을 검사하여 오타나 예기치 않은 변수로 인한 다운스트림 오류를 방지하는 경우입니다.
- 단위 테스트 는 특정 코드 선택을 격리하여 테스트하는 것입니다. 불행히도 대부분의 팀은 분석을 검증할 때 분석을 단위 테스트에 통합하지 않습니다.
- A/B 테스트 는 골든 스테이트 데이터 세트(완벽하다고 알고 있는 분석 버전) 또는 프로덕션 데이터 사본에 대해 분석 흐름을 테스트하는 것입니다. 이렇게 하면 변경 사항이 좋은지, 기존 상황이 개선되었는지 파악하는 데 도움이 됩니다.
파이프라인의 데이터 유효성 검사 기술
파이프라인의 데이터 유효성 검사는 클라이언트가 보내는 데이터가 웨어하우스의 데이터 형식과 일치하는지 확인하는 것입니다. 두 사람이 같은 페이지에 있지 않으면 데이터 소비자(제품 관리자, 데이터 분석가 등)는 상대방에서 유용한 정보를 얻을 수 없습니다.
파이프라인의 데이터 유효성 검사 방법은 다음과 같습니다.
- 이벤트 추적이 스키마 레지스트리에 정의된 것과 일치하는지 확인하기 위한 스키마 유효성 검사 .
- 플랫폼 간의 추적이 잘 작동하는지 확인하기 위해 dbt와 같은 도구에서 관계형, 고유 및 대리 키 유틸리티 테스트를 통한 통합 및 구성 요소 테스트 .
- dbt와 같은 도구를 통한 신선도 테스트 를 통해 소스 데이터가 얼마나 "신선한지"(즉, 얼마나 최신 상태이고 건전한지) 확인합니다.
- 데이터 세트 또는 샘플이 예상 입력과 일치하지 않을 때 경고를 받고 추적에 대한 변경 사항이 기존 데이터 스트림을 엉망으로 만들지 않도록 하는 Great Expectations와 같은 도구를 사용한 분포 테스트 .
웨어하우스의 데이터 유효성 검사 기술
dbt 테스트, Dataform 테스트 및 Great Expectations를 사용하여 웨어하우스로 전송되는 데이터가 예상하고 필요한 규칙을 준수하는지 확인할 수 있습니다. 이러한 변환 내에서 유형 검사 및 유형 안전성을 포함하여 이 계층에서 변환을 수행할 수도 있지만 이 방법은 반응적이므로 기본 유효성 검사 기술로 권장하지 않습니다.
이 시점에서 팀에서 사용할 수 있는 유효성 검사 방법에는 데이터가 특정 규칙을 준수하는지 확인한 다음 일치하도록 변환하는 것이 포함됩니다. 팀은 또한 dbt로 관계 및 신선도 테스트를 사용할 수 있을 뿐만 아니라 Great Expectations를 사용하여 가치/범위 테스트를 사용할 수 있습니다.
이 모든 도구 기능은 이 계층에서 몇 가지 주요 데이터 유효성 검사 기술로 귀결됩니다.
- CRUD 데이터 및 변환이 설정된 규칙을 준수하는지 확인하기 위한 도식화.
- 데이터가 GDPR과 같은 보안 요구 사항을 준수하는지 확인하기 위한 보안 테스트 .
- dbt와 같은 도구에서 관계 테스트 를 통해 한 모델의 필드가 지정된 테이블의 필드에 매핑되는지 확인합니다(참조 무결성이라고도 함).
- 신선도 및 배포 테스트 (파이프라인 섹션에서 언급한 대로).
- 클라이언트에서 전송되는 데이터가 웨어하우스의 예상 범위 또는 형식 내에 있는지 확인하는 범위 및 유형 검사 .
이러한 많은 테스트의 좋은 예는 Lyft의 검색 및 메타데이터 엔진인 Amundsen을 자세히 살펴보면 찾을 수 있습니다. 이 도구를 사용하면 회사의 데이터 소비자가 사용자 메타데이터를 검색하여 유용성과 보안을 모두 높일 수 있습니다. 데이터 품질과 유용성을 보장하는 Lyft의 주요 방법은 새 데이터가 창고에 추가될 때 오래된 중복 데이터를 삭제하는 그래프 정리 Airflow 작업을 통한 일종의 버전 관리입니다.
지금이 더 나은 데이터 유효성 검사 기술을 수용해야 할 때인 이유
과거에는 조직이 데이터 위생 및 거버넌스의 중요성을 인식하지 못했기 때문에 데이터 팀이 데이터 검증에 어려움을 겪었습니다. 그것은 더 이상 우리가 사는 세상이 아닙니다.
기업들은 데이터 품질이 중요하다는 사실을 깨닫게 되었습니다. 사후 대응 방식으로 잘못된 데이터를 정리하는 것만으로는 충분하지 않습니다. 데이터 엔지니어 팀을 고용하여 변환을 통해 데이터를 정리하거나 끝없는 SQL 쿼리를 작성하는 것은 시간과 비용을 불필요하고 비효율적으로 사용하는 것입니다.
이전에는 80% 정확한 데이터(유스 케이스에 따라 제공 또는 수용)가 있고 20%의 오류 마진이 있는 것이 허용되었습니다. 단순한 분석에는 괜찮을 수 있지만 제품 추천 엔진을 강화하거나 이상 징후를 감지하거나 중요한 비즈니스 또는 제품 결정을 내리기에는 충분하지 않습니다.
회사는 엔지니어를 고용하여 제품을 만들고 훌륭한 작업을 수행합니다. 잘못된 데이터를 처리하는 데 시간을 소비해야 한다면 시간을 최대한 활용하지 못하는 것입니다. 그러나 데이터 유효성 검사는 그들이 가장 잘하는 것, 즉 조직을 위한 가치 창출에 다시 집중할 수 있는 시간을 줍니다.
좋은 소식은 고품질 데이터를 얻을 수 있다는 것입니다. 이를 달성하기 위해 기업은 데이터 생산자와 데이터 소비자 사이의 사일로를 허물어 모두가 그 가치를 이해하도록 도와야 합니다. 그런 다음 회사는 스프레드시트를 버리고 버전 관리 및 도식화와 같은 분석에 더 나은 엔지니어링 관행을 적용해야 합니다. 마지막으로 추적 및 데이터 거버넌스 계획을 통해 조직 전체에서 데이터 모범 사례를 준수하는지 확인해야 합니다.
사전 분석 검증에 투자하여 데이터 배당금 획득
오늘날의 세계에서 반응적이고 암시적인 데이터 유효성 검사 도구 및 방법으로는 더 이상 충분하지 않습니다. 그들은 당신에게 시간, 돈, 그리고 아마도 가장 중요한 신뢰를 요구합니다.
이러한 운명을 피하려면 능동적 행동의 철학을 받아들이십시오. 처음부터 소프트웨어 개발 수명 주기 전반에 걸쳐 분석 데이터를 검증하여 비용이 많이 드는 문제가 되기 전에 문제를 식별합니다.