데이터 트랜스포메이션
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
데이터 트랜스포메이션은 데이터를 원하는 형태로 변환하는 일련의 과정으로, 데이터 탐색, 매핑, 코드 생성, 실행, 검토 단계를 거친다. 데이터 변환은 일괄 처리와 실시간 처리 방식으로 나뉘며, 전통적인 방식은 비즈니스 사용자의 참여가 어렵고 기술 전문가의 의존도가 높다는 한계가 있었다. 이러한 한계를 극복하기 위해 대화형 데이터 변환(IDT) 방식이 등장하여, 시각적 인터페이스를 통해 비즈니스 사용자가 직접 데이터를 변환하고 상호 작용할 수 있게 되었다. 데이터 변환에는 AWK, Perl, XSLT와 같은 다양한 언어가 사용되며, 특정 분야에 특화된 도메인 특화 언어(DSL)도 개발되어 사용되고 있다. 또한, 정규 표현식과 같은 간단한 도구도 텍스트 기반 변환에 활용된다.
데이터 변환은 일반적으로 다음과 같은 단계들을 거치며, 변환 작업의 복잡성에 따라 각 단계를 선택적으로 적용하거나 생략할 수 있다.
데이터 변환은 데이터를 처리하는 시점과 방식에 따라 여러 유형으로 나눌 수 있다. 대표적인 방식으로는 대량의 데이터를 정해진 시간에 모아서 한꺼번에 처리하는 일괄 처리(Batch processing)가 있다.[6] 또한, 데이터 발생량에 따라 짧은 주기로 데이터를 처리하는 'microbatch|마이크로배치eng' 방식이나[6] 실시간으로 데이터를 변환하는 스트리밍 처리 방식 등도 활용된다. 각 방식은 데이터의 특성, 처리 요구 시간, 시스템 환경 등에 따라 선택적으로 적용된다.
2. 데이터 변환 과정
이러한 데이터 변환 과정은 주로 개발자나 기술 데이터 분석가가 전문적인 도구를 활용하여 수행하는 경우가 많다.
2. 1. 데이터 탐색
데이터 탐색은 데이터 변환 프로세스의 첫 번째 단계이다. 일반적으로 데이터는 프로파일링 도구 또는 수동으로 작성된 프로파일링 스크립트를 사용하여 데이터의 구조와 특성을 더 잘 이해하고 변환 방법을 결정한다.
2. 2. 데이터 매핑
'''데이터 매핑'''은 최종적으로 원하는 출력을 생성하기 위해 개별 필드를 매핑, 수정, 결합, 필터링, 집계하는 방법을 정의하는 프로세스이다. 개발자 또는 기술 데이터 분석가는 변환 규칙을 정의하기 위해 특정 기술(예: 시각적 ETL 도구,[3] 변환 언어)을 사용하므로 일반적으로 데이터 매핑을 수행한다.
2. 3. 코드 생성
코드 생성은 정의된 데이터 매핑 규칙을 기반으로 데이터를 변환하는 실행 가능한 코드(예: SQL, Python, R 또는 기타 실행 가능한 지침)를 생성하는 과정이다.[4] 일반적으로 데이터 변환 기술은 개발자가 정의한 정의 또는 메타데이터를 기반으로 이 코드를 생성한다.[5]
2. 4. 코드 실행
코드 생성 단계에서 만들어진 코드를 실제 데이터에 적용하여 원하는 결과물을 만들어내는 단계이다. 이 코드는 데이터 변환 도구 안에서 바로 실행될 수도 있고, 개발자가 직접 코드를 가져와 별도로 실행해야 할 수도 있다.
2. 5. 데이터 검토
데이터 검토는 데이터 변환 프로세스의 마지막 단계이다. 이 단계에서는 변환된 결과 데이터가 원래의 요구 사항을 제대로 만족하는지 확인하는 데 초점을 맞춘다. 일반적으로 이 검토 작업은 비즈니스 사용자나 데이터를 최종적으로 사용하는 사람들이 담당한다. 만약 검토 과정에서 데이터에 이상이 있거나 오류가 발견되면, 이러한 문제점은 개발자나 데이터 분석가에게 다시 전달되어 변환 프로세스에 반영해야 할 새로운 요구 사항으로 다루어진다.[1]
3. 데이터 변환 유형
3. 1. 일괄 처리 (Batch)
전통적인 데이터 변환 방식은 대량의 데이터를 한 번에 처리하는 일괄 처리(배치 처리) 과정이었다.[6] 개발자는 데이터 통합 도구를 사용하여 코드나 변환 규칙을 작성하고, 이를 대량의 데이터에 적용하여 실행한다.[7] 이 과정은 데이터 변환 프로세스에서 설명된 순차적인 단계를 따를 수 있다.
일괄 데이터 변환은 데이터 웨어하우징, 데이터 마이그레이션, 애플리케이션 통합 등 다양한 데이터 통합 기술의 기본적인 토대가 된다.[1]
데이터를 변환하여 짧은 지연 시간으로 전달해야 할 필요가 있을 때는 'microbatch|마이크로배치eng'라는 용어가 사용되기도 한다.[6] 이는 소량의 데이터(예: 몇 개의 행 또는 작은 데이터 객체 모음)를 필요할 때 매우 빠르게 처리하여 대상 시스템으로 보내는 방식을 의미한다.
4. 전통적인 데이터 변환의 한계와 대화형 데이터 변환
전통적인 데이터 변환 방식은 데이터 탐색, 데이터 매핑, 코드 생성, 코드 실행, 데이터 검토 등의 단계를 거치며, 주로 기술적 역량을 갖춘 개발자나 데이터 분석가 중심으로 진행된다.[3][4][5] 이 방식은 데이터를 실제로 활용해야 하는 비즈니스 사용자의 직접적인 참여가 어렵고, 개발자는 사용자의 요구사항을 해석하여 구현하는 과정에서 도메인 지식 부족으로 인한 오류 발생 가능성과 시간 지연 등의 한계를 지닌다.[1][2][7][9][10]
이러한 전통적 방식의 한계와 데이터 통합 과정에서의 민첩성 및 셀프 서비스 요구 증가는 새로운 데이터 변환 방식의 필요성을 부각시켰다.[7][10] 이에 따라 등장한 것이 대화형 데이터 변환(Interactive Data Transformation|IDTeng)[13]이다. IDT는 비즈니스 분석가나 일반 사용자가 시각적인 인터페이스를 통해 직접 대규모 데이터 세트와 상호작용하며 데이터를 탐색하고 변환할 수 있도록 지원하는 접근 방식이다.[9][2] 사용자는 코딩 기술 없이도 데이터의 특징을 파악하고 필요한 변환 작업을 직관적으로 수행할 수 있어, 데이터 준비 시간 단축과 분석 정확성 향상에 기여할 수 있다.[10][14] IoT 등 새로운 데이터 소스의 등장과 데이터 거버넌스 준수 요구[12] 역시 이러한 사용자 중심의 데이터 변환 도구의 중요성을 높이고 있으며, 관련 셀프 서비스 도구들이 등장하고 있다.[11]
4. 1. 전통적인 데이터 변환의 한계
전통적인 데이터 변환 방식은 전반적인 효율성과 효과를 저해하는 몇 가지 한계를 지닌다.[1][2][7] 주요 한계 중 하나는 데이터를 실제로 사용해야 하는 비즈니스 사용자들이 데이터 변환 과정에 직접 참여하기 어렵다는 점이다.[9] 일반적으로 비즈니스 사용자는 데이터 변환 작업을 기술적 역량을 갖춘 개발자에게 의존한다. 개발자는 변환 로직 정의와 코드 작성을 통해 이를 실행하는 역할을 맡는다.이 과정에서 변환 정의의 핵심 역할은 개발자에게 넘어가는데, 개발자는 종종 비즈니스 사용자와 동일한 수준의 도메인 지식을 갖추지 못한 경우가 많다. 개발자는 비즈니스 사용자의 요구사항을 해석하여 관련 코드나 로직을 구현해야 하지만, 이 과정에서 요구사항 오해로 인한 오류 발생 가능성이 있으며, 이는 솔루션 도출 시간 증가로 이어질 수 있다.[9][10]
이러한 문제점들은 데이터 통합 과정에서 민첩성과 셀프 서비스의 필요성을 부각시키는 배경이 되었다. 즉, 데이터 사용자가 기술 전문가의 도움 없이 직접 데이터를 변환할 수 있는 환경의 중요성이 커졌다.[7][10]
4. 2. 대화형 데이터 변환 (Interactive Data Transformation, IDT)
대화형 데이터 변환(Interactive Data Transformation, IDT)[13]은 비즈니스 분석가나 일반 비즈니스 사용자가 시각적인 인터페이스를 통해 대규모 데이터 세트와 직접 상호작용하며 데이터를 변환하는 새로운 방식이다.[9] 사용자는 자동 데이터 프로파일링이나 시각화를 통해 데이터의 특징을 파악하고, 클릭이나 특정 요소 선택과 같은 간단한 조작만으로 데이터를 변경하거나 수정할 수 있다.[2]대화형 데이터 변환은 기존의 일괄 데이터 통합과 유사한 단계를 따르지만, 몇 가지 주요 차이점이 있다. 각 단계가 반드시 순서대로 진행되지 않으며, 작업을 완료하는 데 높은 수준의 기술적 전문 지식이 요구되지 않는다.[14]
이 방식은 데이터 탐색, 데이터 매핑, 코드 생성/실행, 데이터 검토라는 기존에 분리되어 있던 단계들을 하나의 통합된 시각적 인터페이스로 결합한다. 예를 들어, 사용자가 인터페이스 상에서 특정 항목의 이름을 변경하면, 소프트웨어는 이 변경 사항을 반영하여 이전 또는 다음 단계를 자동으로 업데이트한다. 또한, 인터페이스에는 데이터의 패턴이나 이상 현상을 시각적으로 보여주는 기능이 포함되어 있어 사용자가 오류나 특이값을 쉽게 식별할 수 있도록 돕는다.[9]
데이터 변환 작업이 완료되면, 시스템은 실행 가능한 코드나 로직을 생성한다. 이 코드는 즉시 실행하거나 나중에 유사한 데이터 세트에 반복적으로 적용할 수 있다.
대화형 데이터 변환 시스템은 데이터 준비 및 변환 과정에서 개발자의 개입을 줄여 작업 시간을 단축시키는 장점이 있다. 또한, 사용자 요구사항을 잘못 해석하여 발생하는 비용 소모적인 오류를 줄이고, 비즈니스 사용자나 분석가가 직접 데이터를 제어하고 필요에 맞게 상호작용할 수 있도록 지원한다.[10]
Trifacta, Alteryx, Paxata를 포함한 여러 기업들이 대화형 데이터 변환 도구를 제공하고 있다. 이들 도구는 대량의 데이터를 효율적으로 분석, 매핑, 변환하는 동시에, 그 과정에 내재된 기술적 복잡성을 사용자가 크게 신경 쓰지 않도록 추상화하는 것을 목표로 한다.
5. 데이터 변환 언어
데이터 변환 작업을 수행하기 위해 다양한 종류의 언어와 도구가 활용된다.[15] 이러한 변환 언어들은 특정 문법 규칙을 따르며, 이는 바커스-나우르 표기법(BNF)과 유사한 경우가 많다. 대표적인 변환 언어로는 오랜 역사를 가진 AWK나 강력한 텍스트 처리 능력을 지닌 Perl, XML 데이터 변환 표준인 XSLT 등이 있다. 또한 특정 문서 형태로 변환하는 데 특화된 템플릿 언어나 소스 코드 변환에 사용되는 TXL 같은 언어도 존재한다.[15]
최근에는 특정 분야의 데이터 변환을 더 쉽게 처리하기 위해 설계된 도메인 특화 언어(DSL)가 주목받고 있다. Trifacta의 "Wrangle"과 같은 DSL은 프로그래밍 지식이 부족한 사용자도 데이터 변환 작업을 용이하게 하고 생산성을 높이는 것을 목표로 한다.[16][17] 이러한 DSL은 Spark나 MapReduce 같은 다양한 데이터 처리 엔진에서 동일한 변환 로직을 실행할 수 있는 유연성을 제공하기도 한다.[17]
한편, 복잡한 변환 언어 외에도 정규 표현식을 이용하여 텍스트 편집기 등에서 간단하면서도 유용한 데이터 변환 작업을 수행할 수 있다.
5. 1. 주요 언어
데이터 변환을 수행하기 위해 다양한 언어가 존재한다. 많은 변환 언어는 문법을 정의해야 하는데, 대부분의 경우 바커스-나우르 표기법(BNF)과 매우 유사한 구조를 사용한다. 이러한 목적에 사용될 수 있는 언어들은 접근성(비용)과 일반적인 유용성 측면에서 다양하다.[15] 주요 변환 언어의 예는 다음과 같다.- AWK: 가장 오래되고 널리 사용되는 텍스트 데이터 변환 언어 중 하나이다.
- Perl: 텍스트나 바이너리 데이터에 대한 강력한 연산을 수행할 수 있으며, 절차적 프로그래밍과 객체 지향 프로그래밍 구문을 모두 지원하는 고급 언어이다.
- 템플릿 언어: 데이터를 특정 형식의 문서(예: HTML, XML)로 변환하는 데 특화되어 있다 (템플릿 프로세서 참조).
- TXL: 소스 코드나 데이터 변환에 사용되는 프로토타입 기반 언어이다.
- XSLT: XML 데이터 변환을 위한 표준 언어이다. 많은 응용 분야에서 XQuery로 대체될 수 있다.
또한, Trifacta 및 Paxata와 같은 회사는 데이터 세트를 처리하고 변환하기 위해 도메인 특정 변환 언어(DSL, Domain Specific Language)를 개발했다. DSL은 특정 분야의 문제 해결에 특화된 언어로, 비기술 사용자의 생산성과 접근성을 높이는 데 기여한다.[16] Trifacta의 "Wrangle"은 이러한 DSL의 한 예이다.[17]
DSL의 또 다른 장점은 변환 로직의 구체적인 실행 방식을 추상화할 수 있다는 점이다. 즉, DSL로 작성된 동일한 변환 로직을 Spark, MapReduce, Dataflow와 같은 다양한 데이터 처리 엔진에서 실행할 수 있어, 특정 엔진에 종속되지 않는 유연성을 제공한다.[17]
변환 언어가 일반적으로 데이터 변환에 가장 적합하지만, 정규 표현식과 같이 비교적 간단한 도구를 사용해서도 유용한 변환을 수행할 수 있다. vim, emacs, TextPad와 같은 텍스트 편집기는 정규 표현식을 활용한 텍스트 대체를 지원한다. 이를 통해 특정 패턴의 모든 발생 지점을 찾아, 원래 패턴의 일부를 사용하여 다른 패턴으로 바꿀 수 있다. 예를 들어, 여러 줄에 걸쳐 있는 함수 호출들을 다음과 같이 더 간결한 형태로 통합하는 것이 가능하다.
```text
// 변환 전
foo ("some string", 42, gCommon);
bar (someObj, anotherObj);
foo ("another string", 24, gCommon);
bar (myObj, myOtherObj);
// 변환 후 (정규 표현식 활용 예시)
foobar("some string", 42, someObj, anotherObj);
foobar("another string", 24, myObj, myOtherObj);
```
정규 표현식을 사용하는 또 다른 이점은 null 변환 테스트에 실패하지 않는다는 점이다. 이는 변환 규칙을 적용해도 실제 데이터 변경이 일어나지 않는 경우(null 변환)에도 오류 없이 처리가 가능하다는 의미이다. 일부 복잡한 변환 언어는 이러한 테스트에 실패하는 경우가 있다.
5. 2. 도메인 특화 언어 (Domain-Specific Language, DSL)
데이터 변환을 수행하기 위해 AWK, Perl, XSLT 등 다양한 변환 언어가 존재한다.[15] 이러한 언어들 외에도, 특정 도메인의 데이터 변환 작업을 보다 쉽게 수행할 수 있도록 설계된 도메인 특화 언어(Domain-Specific Language, DSL)가 개발되었다.Trifacta나 Paxata와 같은 기업들은 데이터 세트를 처리하고 변환하기 위한 자체적인 DSL을 개발했다. DSL 개발의 주요 목적 중 하나는 프로그래밍 경험이 부족한 비기술 사용자들도 데이터 변환 작업을 더 쉽게 수행하고 생산성을 높일 수 있도록 접근성을 개선하는 것이다.[16] Trifacta에서 개발한 "Wrangle" 언어가 이러한 DSL의 대표적인 예시다.[17]
최근 DSL의 중요한 장점 중 하나는 변환 로직의 실제 실행 과정을 추상화한다는 점이다. 사용자는 DSL로 정의한 변환 논리를 Spark, MapReduce, Dataflow 등 다양한 데이터 처리 엔진에서 동일하게 실행할 수 있다. 이는 DSL을 사용함으로써 특정 기본 엔진 기술에 종속되지 않고 유연하게 데이터 변환 작업을 수행할 수 있음을 의미한다.[17]
5. 3. 정규 표현식 (Regular Expression)
변환 언어가 일반적으로 데이터 변환에 가장 적합하지만, 정규 표현식과 같이 비교적 간단한 도구를 사용해서도 유용한 변환 작업을 수행할 수 있다. vim, emacs, TextPad와 같은 여러 텍스트 편집기는 인수를 사용하여 정규 표현식 활용을 지원한다. 이를 통해 특정 텍스트 패턴의 모든 발생 지점을 찾아, 원래 패턴의 일부를 이용해 다른 패턴으로 대체하는 작업이 가능하다.예를 들어, 아래와 같은 코드가 있다고 가정해보자.
foo ("some string", 42, gCommon);
bar (someObj, anotherObj);
foo ("another string", 24, gCommon);
bar (myObj, myOtherObj);
정규 표현식을 사용하면 이 코드를 다음과 같이 더 간결한 형태로 변환할 수 있다.
foobar("some string", 42, someObj, anotherObj);
foobar("another string", 24, myObj, myOtherObj);
이 변환 과정은 세 개의 인수를 가진 `foo` 함수 호출과 두 개의 인수를 가진 `bar` 함수 호출이 나타나는 모든 부분을 찾아, 원래 함수들의 인수 일부 또는 전부를 사용하여 `foobar`라는 단일 함수 호출로 대체한 것이다.
정규 표현식을 사용하는 또 다른 장점은 null 변환 테스트, 즉 변환을 수행하지 않는 변환을 적용했을 때 실패하지 않는다는 점이다. 이는 일부 변환 언어에서는 실패할 수 있는 테스트이다.
참조
[1]
웹사이트
Agile Comes to Data Integration
https://www.cio.com/[...]
[2]
문서
DataXFormer. Morcos, Abedjan, Ilyas, Ouzzani, Papotti, Stonebraker. An interactive data transformation tool
http://livinglab.mit[...]
[3]
웹사이트
Top 10 ETL Tools
http://dwbimaster.co[...]
[4]
문서
Petr Aubrecht, Zdenek Kouba. Metadata driven data transformation
http://labe.felk.cvu[...]
[5]
웹사이트
Code Generators
http://www.learndata[...]
[6]
웹사이트
10 Rules for Real-Time Data Integration
https://tdwi.org/Art[...]
[7]
문서
Tope Omitola, Andr´e Freitas, Edward Curry, Sean O'Riain, Nicholas Gibbins, and Nigel Shadbolt. Capturing Interactive Data Transformation Operations using Provenance Workflows
http://andrefreitas.[...]
[8]
문서
The Value of Data Transformation
[9]
문서
Morton, Kristi -- Interactive Data Integration and Entity Resolution for Exploratory Visual Data Analytics
https://digital.lib.[...]
[10]
문서
McKinsey.com. Using Agile to Accelerate Data Transformation
[11]
뉴스
Why Self-Service Prep Is a Killer App for Big Data
https://www.datanami[...]
2017-09-20
[12]
웹사이트
Your Practical Guide to Data Transformation
https://blog.coupler[...]
2022-07-08
[13]
문서
Tope Omitola , Andr´e Freitas , Edward Curry , Sean O’Riain , Nicholas Gibbins , and Nigel Shadbolt. Capturing Interactive Data Transformation Operations using Provenance Workflows
http://andrefreitas.[...]
[14]
문서
Peng Cong, Zhang Xiaoyi. Research and Design of Interactive Data Transformation and Migration System for Heterogeneous Data Sources
https://ieeexplore.i[...]
[15]
웹사이트
Extraction and Transformation
https://dmoztools.ne[...]
[16]
웹사이트
Wrangle Language - Trifacta Wrangler - Trifacta Documentation
https://docs.trifact[...]
2017-09-20
[17]
웹사이트
Advantages of a Domain-Specific Language Approach to Data Transformation - Strata + Hadoop World in New York 2014
https://conferences.[...]
2017-09-20
[18]
웹사이트
Agile Comes to Data Integration
https://www.cio.com/[...]
[19]
문서
DataXFormer. Morcos, Abedjan, Ilyas, Ouzzani, Papotti, Stonebraker. An interactive data transformation tool
http://livinglab.mit[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com