웹 서비스 데이터 통합

다음 문장으로 이어집니다 이전 게시글 저희는 모든 데이터 통합 및 보고 작업은 원본 데이터에 대한 명확한 이해에서 시작되어야 한다고 강조했습니다. XMLSpy에서 제공하는 그리드 뷰 기능은 업계 최고 수준의 기능을 제공합니다 XML 및 JSON 편집기, 저희는 웹 서비스에서 가져온 5일간의 날씨 예보 데이터를 담고 있는 JSON 형식의 데이터를 분석했습니다.

앞서 언급한 시나리오를 계속해서 진행하면서, 수상 경력이 있는 그래픽 기반 변환 도구인 MapForce를 사용하겠습니다 모든 유형의 데이터 간 변환 및 통합을 위한 데이터 매핑 도구, 주요 화물 운송 항구들의 예측 데이터를 보기 좋게 정리된 엑셀 문서로 변환합니다. 특히, 컨테이너를 싣고 내리는 크레인의 작동을 방해하거나, 항구에 진입하고 나오는 선박의 속도를 늦춰 지연을 초래할 수 있는 강한 바람이나 폭우에 대한 예측 정보를 강조하여 표시할 것입니다.

날씨 예보를 위한 REST 요청은 위도와 경도 좌표를 입력받아 전 세계 어느 지역이든 5일간의 예보를 제공합니다. MapForce는 하나의 매핑으로 여러 입력 및 출력을 처리할 수 있으므로, 웹 서비스 데이터 통합 프로젝트를 시작하기 위해 먼저 화물 항구 목록과 해당 좌표를 구축하겠습니다.

XMLSpy에서 그리드 뷰를 사용하여 새로운 JSON 문서를 만들 때, JSON 구문 기호에 대해 걱정하지 않고 데이터를 입력하면 빠르게 목록을 만들 수 있습니다. 아래 그림에서 보시는 것처럼, 왼쪽 상단의 아이콘을 클릭하면 목록이 표 형식으로 표시됩니다

"그리드 보기"는 "텍스트 보기"와 달리, 파일 내용을 검토하고 확인하는 데 훨씬 용이합니다. "텍스트 보기"는 유효한 JSON 파일에 필요한 모든 구문 기호를 표시하지만, "그리드 보기"는 파일 내용을 보다 직관적으로 보여줍니다.

데이터 매핑 개요

MapForce 웹 서비스 데이터 통합 프로젝트는 항구 목록을 입력 파일로 사용하고, 각 좌표 세트에 대해 REST 요청을 보내서, 각 항구에 대한 결과 JSON 데이터를 엑셀 워크시트에 매핑합니다.

MapForce는 매핑 작업을 위한 JSON 데이터 구조를 모델링할 때, json-schema.org 규격을 따르는 JSON 스키마 파일을 사용합니다. MapForce는 JSON 인스턴스에서 자동으로 JSON 스키마를 생성할 수 있습니다. 이는 단일 "port-list.json" 파일의 경우 잘 작동할 것입니다.

또한, 웹 서비스에서 반환되는 데이터를 처리하기 위한 JSON 스키마가 필요하며, 이는 조금 더 복잡합니다. 모든 가능한 필수 및 선택적 데이터를 포함하는 단일 .json 예측 파일은 존재하지 않습니다.

다행히 XMLSpy는 XMLSpy 프로젝트 폴더에 수집된 여러 개의 XML 문서들을 기반으로 JSON 스키마를 생성할 수 있습니다.

결과적으로 생성된 스키마를 JSON 스키마 형태로 열어보면, "rain" 객체가 선택 사항으로 지정되어 있음을 확인할 수 있습니다. 이는 예측 데이터 파일 중 최소 하나에서 5일 동안 비가 예보되지 않았기 때문에, 응답에 "rain" 객체가 포함되지 않은 것입니다.

이 스키마를 사용하여 매핑 과정에서 REST 응답 데이터를 설명할 수 있습니다.

아래 이미지에서 볼 수 있듯이, 우리는 게시물 목록 파일(post-list.json)과 새로운 웹 서비스를 추가하여 데이터 매핑 작업을 시작했습니다. REST API 주소를 추가하고, 위도와 경도 좌표를 입력 파라미터로 매핑하여 요청을 구성했습니다. 현재 응답 본문은 아직 구조화되어 있지 않습니다.

XMLSpy에서 생성한 스키마를 선택하여 응답 구조 대화 상자를 열려면, 해당 부분을 클릭할 수 있습니다

스키마가 할당되면, 본문에 포함된 모든 항목을 매핑할 수 있습니다

이제 대상 엑셀 파일을 추가할 수 있습니다. 예시 스프레드시트가 제공되었으며, 이를 모델로 사용하여 일부 셀 스타일, 그래프, 그리고 가짜 데이터가 포함되어 있습니다

이 스프레드시트를 웹 서비스 데이터 통합 매핑의 대상 항목으로 추가할 수 있지만, 데이터를 받을 셀을 아직 지정해야 합니다

"행 1, n=dyn" 항목 옆의 버튼을 클릭하면 "범위 선택" 대화 상자가 열립니다. 10행에는 데이터의 열 머리글이 포함되어 있으므로, 11행부터 시작하는 주요 테이블을 A열부터 K열까지 매핑하고자 합니다. 각 열은 서로 다른 데이터 유형을 가지며, 이는 대부분 JSON 소스에서 텍스트 또는 숫자 유형에 해당하고, 엑셀에서는 해당 형식 유형에 해당합니다. "범위 선택" 대화 상자를 통해 정확한 대상 범위와 데이터 유형을 정의할 수 있습니다

"선택 범위" 대화 상자에서 열 이름을 식별하면, 해당 이름들이 출력 매핑에서 레이블로 추가됩니다. 다음으로, 아래와 같이 각 예측 결과를 별도의 엑셀 파일에 매핑하는 로직을 구축할 수 있습니다

엑셀 대상 파일의 가장 위에 있는 파일 이름은 ""으로 설정되어 있으며, 이는 매핑 과정에서 파일 이름이 생성될 것임을 나타냅니다. 각 실제 파일 이름은 원본 목록에서 가져온 도시 이름을 포함하는 연결 함수를 사용하여 생성되며, 예를 들어 "forecast-Seattle.xlsx"와 같은 이름이 만들어집니다.

각 파일 내에서 주요 데이터 테이블이 11행부터 시작되도록 해야 합니다. 이를 위해, 목록 배열의 최상위 객체를 10행, n=dyn 위치에 연결하고, 파일 이름이 변경될 때마다 시작 행을 재설정하는 자동 번호 매기기 기능을 사용했습니다.

응답에 포함된 각 목록 객체는 엑셀 스프레드시트의 새로운 행에 매핑됩니다. 이제 응답에 포함된 개별 항목을 해당 행의 열과 연결할 수 있습니다. 아래 이미지에서 추가적인 변환이 필요 없는 모든 항목을 연결했습니다.

직접 연결된 항목의 경우, JSON 응답에 포함된 데이터 유형은 스프레드시트의 열에 대해 지정한 유형과 정확히 일치합니다. 예를 들어, 원본 JSON 데이터의 "Temp"는 숫자형이고, 대상 스프레드시트의 E열도 숫자형입니다. 마찬가지로, 원본 JSON 데이터의 "description"은 문자열이며, 대상 스프레드시트의 B열도 문자열입니다.

응답에 대한 JSON 스키마에서 "rain" 객체가 선택 사항이라는 것을 확인했습니다. 만약 "rain" 객체가 존재하지 않는 경우, 우리는 0으로 대체하고 싶습니다. 이를 쉽게 구현하기 위해, "exists"와 "if-else"를 결합하는 표현식을 사용할 수 있습니다

JSON 데이터 형식의 한 가지 제약은 문자열과 숫자, 이 두 가지 데이터 유형만 포함한다는 것입니다. 정수, 날짜 및 시간 등과 같은 데이터 유형이나, 엑셀에서 사용하는 퍼센트, 회계 등과 같은 특수 형식은 JSON에서 정의되지 않습니다. MapForce는 매핑 과정에서 소스 데이터를 원하는 대상 데이터 유형으로 변환하는 데 필요한 내장 함수를 편리하게 제공합니다. 이를 통해 엑셀 테이블의 A열에 원하는 날짜 및 시간 형식을 만들 수 있습니다.

JSON 데이터 내의 "main.dt_text" 항목은 날짜와 시간을 문자열 형태로 나타냅니다. 예를 들어 "2020-05-09 06:00:00"과 같습니다. MapForce는 "parse-dateTime"라는 함수를 제공하며, 이 함수는 문자열과 형식 모델을 입력으로 받아 날짜 및 시간 정보를 반환합니다. 하지만 또 다른 복잡성이 있습니다. "dt-txt" 문자열은 예측 대상 도시의 지역 시간이 아닌 GMT 시간대를 기준으로 합니다. 지역 시간과의 차이는 "city.timezone" 항목에서 양수 또는 음수 값으로 제공됩니다.

메인 매핑 화면을 단순하게 유지하기 위해, "calc-local-time"이라는 사용자 정의 함수를 만들었습니다. 이 함수는 문자열과 시간 오프셋을 입력으로 받아 현지 시간을 계산합니다. 이 사용자 정의 함수는 내장 함수와 마찬가지로 매핑됩니다

웹 서비스 데이터 통합 매핑을 완료하기 위해 마지막으로 해야 할 일은 도시 이름과 국가 이름을 결합한 후, 그 결과를 1행 C열에 추가하는 것입니다

다음은 최종 매핑 결과의 전체적인 모습입니다

각 도시별로 올바른 형식의 엑셀 문서를 얻기 위해서는, 각 대상 파일 이름과 일치하는 기존의 형식화된 엑셀 파일이 필요합니다. 배치 파일을 사용하면, 원래 엑셀 샘플 파일을 스타일과 수식을 포함하여 반복적으로 복사하여 원본 파일을 빠르게 만들 수 있습니다.

웹 서비스 데이터 통합 결과

매핑 창의 왼쪽 하단에 있는 "출력" 버튼을 클릭하면 매핑 작업이 실행되고 결과 파일이 생성됩니다. 워크스테이션에 엑셀이 설치되어 있는 경우, "출력" 창에서 실제 엑셀 결과물을 미리 볼 수 있습니다

맨 위에는 날짜, 시간, 현재 날씨 정보가 표시되고, 강수량 차트 옆에는 엑셀 스프레드시트의 수식으로 생성된 텍스트 요약이 있습니다. 모든 9개의 출력 파일이 생성되었으며, 사용자는 원하는 파일을 선택하여 미리 볼 수 있습니다. 아래에 파일 선택 드롭다운 목록과 시애틀의 예보가 포함된 일곱 번째 파일이 표시되어 있습니다

엑셀 기능은 미리보기 창에서 사용할 수 있습니다. 예를 들어, 이 스프레드시트는 분할 화면 스크롤 기능을 사용하며, 상단 영역은 고정되어 있습니다. 주요 데이터 테이블의 맨 아래로 스크롤하면, 마지막 예측에서 예상되는 강수량을 정확히 확인할 수 있습니다. 왼쪽의 행 번호를 참고하십시오

결과가 만족스러우면, 생성된 파일 중 하나 또는 전부를 저장할 수 있습니다

중간 데이터

MapForce는 데이터 변환 효율성을 극대화하도록 설계되었습니다. REST 응답에서 반환되는 중간 JSON 데이터를 저장하거나, 관리하거나, 명시적으로 조작할 필요가 없었습니다. 이 웹 서비스 데이터 통합 매핑 작업은 중간 데이터를 저장하지 않습니다.

만약 최종 엑셀 스프레드시트와 함께 JSON 응답 데이터를 저장하고 싶다면, MapForce는 여러 가지 옵션을 제공합니다. 한 가지 방법은 동일한 스키마를 기반으로 응답 데이터와 동일한 형식의 중간 JSON 파일을 생성하는 체인형 매핑을 사용하는 것입니다. 그런 다음, 이 JSON 파일을 엑셀 출력으로 변환할 수 있습니다. 체인형 매핑을 사용하면 중간 파일과 최종 결과 모두를 미리 보고 저장할 수 있습니다. 아래는 체인형 매핑을 통해 생성된 출력 파일 목록이며, 배경에는 JSON 파일 중 하나가 텍스트 보기로 표시되어 있습니다

자동화된 웹 서비스 데이터 통합

저희의 워크플로우 시나리오에서는 매일 예측치를 업데이트해야 합니다. 저희는 매핑 정보를 MapForce Server 실행 파일로 저장하여 MapForce Server를 통해 자동 처리를 수행하거나, FlowForce Server에 직접 배포하여 자동화된 일정에 따라 새로운 예측치를 생성할 수 있습니다. FlowForce Server 작업은 데이터 통합 작업과 함께 여러 작업을 결합할 수 있으며, 파일 이동이나 이메일 전송과 같은 시스템 작업도 포함될 수 있습니다. 또한, FlowForce Server 작업은 복잡한 워크플로우를 실행하여 결과를 전달하고 다른 작업을 트리거하는 데 사용될 수 있습니다.

짧은 영상을 보세요 영상 시연 MapForce 또는 무료 체험판을 다운로드하세요 JSON 및 웹 서비스 데이터 통합, 또는 기타 데이터 매핑, 변환 및 처리 작업 등 자체 프로젝트를 시작하는 데 필요한 튜토리얼, 도움말, 그리고 다양한 예제들을 제공합니다!