데이터 변환의 유효성 검사 및 오류 수정
소프트웨어 개발자 및 기타 데이터 전문가들은 종종 데이터를 한 형식에서 다른 형식으로 변환해야 합니다. 이러한 변환은 단순한 일대일 변환일 수도 있지만, 더 복잡한 처리가 필요할 수도 있습니다. 예를 들어, CSV 파일을 데이터베이스로 가져올 때 관계를 생성해야 하거나, 원본 데이터를 대상 형식에 맞게 분할해야 할 수도 있습니다. 전체 이름과 이름, 중간 이름, 성, 그리고 선택적인 접미어를 분리하는 경우가 이에 해당합니다. 데이터 변환의 유효성을 검증하는 것은 데이터 손실이나 손상을 방지하는 데 매우 중요합니다.
이전 게시글에서 "웹 서비스 데이터 통합"에 대해 설명하면서, GMT 시간 값을 문자열로 표현하고, 이를 초 단위의 숫자 값과 결합하여 날씨 예보에 필요한 지역 시간을 생성했습니다. 이 작업을 수행하기 위해 필요한 모든 단계를 수행하는 사용자 함수를 만들었습니다. MapForce는 강력한 인터랙티브 데이터 매핑 디버거를 포함하고 있으며, 이를 통해 이 변환 과정을 쉽게 추적하고 검증할 수 있습니다. 작동 방식을 자세히 살펴보겠습니다.

저희 데이터 변환 프로젝트에서 사용자 함수 "calc-local-time"이 어떻게 사용되는지 보여드리겠습니다. 보시다시피, MapForce는 시각적인 인터페이스와 드래그 앤 드롭 기능을 통해 코딩 없이 데이터 매핑을 지원합니다.

이 함수는 dt_txt라는 문자열 값을 입력받습니다. 이 값은 날짜와 시간을 나타내며, 형식은 "2020-02-22 18:00:00"과 같습니다. 또한, 예측 지역의 시간대와 관련된 숫자 값을 입력받습니다. 이 값은 GMT와의 시간 차이를 초 단위로 나타냅니다.
데이터가 변환되면, 해당 함수의 결과는 엑셀 스프레드시트의 A열에 저장됩니다. 스프레드시트 내에서 A열의 형식은 "날짜"로 정의되어 있으며, 지정된 형식에는 시간 정보도 포함됩니다. 예를 들어, "5/20/20 4:00 PM"과 같이 표시됩니다.
사용자 함수 헤더를 두 번 클릭하면 해당 함수가 확장되어 개별 작업들이 표시됩니다

두 개의 입력 값은 오른쪽 부분에 있으며, 최종 출력 값인 "A"는 가장 왼쪽에 위치합니다. 간단히 설명하자면, 이 함수는 입력된 날짜 및 시간(dt_txt)에 특정 시간대의 시간을 더하여 현지 시간을 계산합니다. MapForce에는 위 그림에서 출력 값 "A" 바로 왼쪽에 표시된 것처럼, 이 작업을 수행하는 내장된 날짜/시간 덧셈 함수가 포함되어 있습니다. 하지만 실제로는 보이는 것만큼 간단하지 않습니다! 웹 서비스로부터 수신되는 입력 값은 다양한 형식으로 제공되므로, 날짜/시간 덧셈 함수의 형식과 구문에 맞게 조정해야 합니다.
MapForce 디버거를 사용하여 데이터 변환의 유효성을 검증하는 방법
저희는 MapForce를 사용할 수 있습니다 데이터 변환 디버거 사용자 정의 함수의 작동 과정을 추적하여 원하는 결과를 얻는지 확인합니다. 먼저, 타임존 입력 필드를 마우스 오른쪽 버튼으로 클릭하여 디버깅 중단점을 설정합니다

여러 개의 디버깅 도우미 창이 열리고, 프로그램은 중단점(breakpoint)에 도달할 때까지 실행을 계속합니다. 중단점에 도달했을 때, 처리된 값이 강조 표시됩니다

저희는 실행을 계속하기 위한 다양한 옵션을 제공합니다. "최소 단계" 옵션은 각 데이터 변환 과정을 가장 자세하게 보여줍니다.

이 명령어는 단계를 세분화하며, 일반적으로 각 연결에 대해 두 번씩 중단됩니다. 즉, 소스에서 값이 생성될 때 한 번, 그리고 대상에서 해당 값을 사용할 때 한 번씩 중단됩니다. "최소 단계"를 반복적으로 클릭하면 변환이 계속 실행되며, "calc-local-time" 함수가 처리되는 과정을 정확하게 확인할 수 있습니다

실행 과정을 계속 진행하면서, 각 연결 지점에 해당하는 값들이 창에 추가됩니다.
내장된 datetime-add 함수는 첫 번째 입력으로 날짜 및 시간 값을, 두 번째 입력으로 더할 시간 간격을 지정하는 문자열 값을 필요로 합니다. 아래 그림에서는 출력 값을 생성하는 과정을 단계별로 보여줍니다. 강조 표시된 부분은 datetime-add 함수에 입력되는 값과 최종적으로 생성된 결과입니다

초 단위의 원래 오프셋 값은 28,800초이며, 이는 8시간에 해당합니다. 생성된 결과는 dt_txt 기준 시간보다 8시간 뒤에 나타나므로, 출력 결과는 유효합니다.
다른 사례들을 고려해 볼 때
GMT 시간과의 시차는 GMT 기준 동쪽에 위치한 지역에서만 양수가 됩니다. GMT 기준 서쪽에 위치한 지역은 시차가 음수가 되어야 합니다. 다시 말해, 뉴욕은 런던보다 서쪽에 위치하므로 현지 시간이 더 빠릅니다. 반면, 베이징은 GMT 기준 동쪽에 위치하므로 현지 시간이 더 늦습니다.
calc-local-time 함수가 시간대 오프셋이 음수인 경우에도 제대로 작동하는지 확인해야 합니다.
우리는 여러 가지 방법으로 이를 수행할 수 있습니다. 저희가 사용하는 도시 목록에는 GMT 기준 동쪽에 위치한 도시와 서쪽에 위치한 도시가 모두 포함되어 있습니다. 우리는 실행 과정을 계속 진행하면서, 음수 시간대를 가진 도시를 만날 때까지 계속 진행할 수 있습니다.

웹 서비스는 각 도시별로 40개의 예측 정보를 제공하므로, 처음 4개 도시의 모든 정보를 확인하는 것은 매우 번거로울 수 있습니다.
도시 목록을 수정하여 서구 반구의 새로운 도시를 목록 맨 위에 추가하거나, 테스트 케이스를 위해 새로운 입력 파일을 만들 수 있습니다. 많은 경우에 이러한 방식이 합리적인 테스트 전략이 될 수 있습니다.
또는, 특정 조건을 설정하여 중단점을 설정할 수 있습니다. 만약 중단점을 설정하여 값이 음수일 때만 프로그램 실행을 일시 중지하도록 설정한다면, 원래 입력 파일을 계속 사용할 수 있습니다. 이것이 최종 결론에 가장 빠르게 도달하는 방법입니다.
데이터 매핑으로 돌아와서, 중단점을 수정하려면 중단점 아이콘을 마우스 오른쪽 버튼으로 클릭합니다

이렇게 하면 대화 상자가 열리며, 여기서 중단점을 조건부로 설정할 수 있습니다. 아래 그림은 타임존 값이 음수일 경우 실행을 중단하는 조건을 보여줍니다

이제 매핑 작업을 디버그 모드로 다시 실행할 수 있습니다. 입력 목록에 있는 처음 몇 개의 도시 중, 모두 GMT 시간대보다 동쪽에 위치한 도시들이 처리됩니다. 첫 번째로 음수 시간대 값을 가진 도시가 나타나면, 중단점이 실행되고 프로그램 실행이 일시 중지됩니다.

위에서 설명한 동일한 단계 추적 방식을 사용하면, calc-local-time 함수가 작동하는 동안 음수 값에 어떤 변화가 발생하는지 확인할 수 있습니다.

-25,200초의 시간대 값을 문자열로 변환합니다. 그런 다음, 내장된 연결 함수를 사용하여 문자열의 시작과 끝에 문자를 추가하여 datetime-add 함수에 사용할 기간 문자열을 생성합니다.
음수 값을 더하는 것은 뺄셈과 같지만, 현재 시점에서는 기간을 나타내는 구문이 정확하지 않습니다. 마이너스 기호(하이픈)는 기간 문자열의 첫 번째 문자로 시작해야 합니다. 따라서 replace 함수는 문자열에서 "PT-"를 찾고, 찾으면 "-PT"로 바꿉니다.
25,200초는 7시간입니다. 입력 값인 2020-05-23T00:00:00에서 7시간을 빼면 2020-05-22T17:00:00, 즉 2020년 5월 22일 오후 5시가 됩니다. 이제 양수 및 음수 오프셋을 사용하는 경우에 대한 사용자 함수를 검증했습니다.
데이터 변환의 정확성을 검증하든, 예상치 못한 결과를 추적하든, 디버깅 데이터 변환 과정 MapForce는 데이터 통합 및 ETL 프로젝트의 정확한 작동 원리에 대한 깊이 있는 이해를 제공하며, 이전에는 훨씬 더 고가의 데이터 매핑 제품에서도 불가능했던 수준의 통찰력을 제공합니다.
짧은 영상을 보세요 영상 시연 MapForce 또는 무료 체험판을 다운로드하세요 JSON 및 웹 서비스 데이터 통합, 또는 기타 데이터 매핑, 변환 및 처리 작업 등 자체 프로젝트를 시작하는 데 필요한 튜토리얼, 도움말, 그리고 다양한 예제들을 제공합니다!