---
title: 향상된 노드 기능을 활용한 구조화된 데이터 매핑
date: 2024-05-03
categories:
  - data-integration
  - tools
tags:
  - data-integration
  - data-mapping
  - mapforce
  - software-tools
description: MapForce의 특수 필터 기능은 구조화된 데이터를 매핑하는 데 필요한 노드 기능을 향상시킵니다
---
Status: #blog

Tags:  #data-integration #data-mapping #mapforce #software-tools

Categories: [data-integration](/blog/ko/category/data-integration.md) 
# 향상된 노드 기능을 활용한 구조화된 데이터 매핑

이전에 저희는 [노드 기능 지원](https://www.altova.com/blog/node-functions-simplify-mapping-hierarchical-data-structures/)에 대해 보도한 바 있습니다. 이 기능은 구조화된 데이터를 매핑하는 과정을 단순화하며, 매핑 과정에서 동일한 함수를 여러 번 복사하여 붙여넣을 필요성을 없애줍니다. 동일한 함수를 불필요하게 반복하면 매핑 레이아웃이 복잡해지고, 데이터 매핑을 이해하거나 수정하기가 더 어려워집니다.

MapForce는 노드 함수를 정의할 때 사용할 수 있는 추가 필터를 제공합니다. 이러한 매개변수를 통해 개발자는 사용자 정의된 기준에 따라 특정 노드에 함수와 기본값을 적용할 수 있습니다. 예를 들어, 노드 이름, 노드 길이, 노드 데이터 유형의 정밀도, 사용자 정의 노드 주석 등 노드 메타데이터를 기반으로 노드 함수를 적용할 수 있습니다.

향상된 노드 기능을 갖춘 매핑 방식을 살펴보겠습니다.

![](/blog/images/mapping-structured-data-with-node-functions.jpg)

<!--more-->

아래에 제시된 [데이터 매핑](https://www.altova.com/ko/mapforce)은 MapForc에 설치된 PriceCalculation.mfd 노드 함수의 예시입니다. 이 예시는 상품 목록의 원래 가격과 마진율을 기반으로 최종 판매 가격을 계산합니다. 입력 데이터는 CSV 형식의 텍스트 파일이며, 출력은 XML 파일입니다.

[![노드 함수를 사용하여 구조화된 데이터를 매핑하는 MapForce 예제](/blog/images/mapping-structured-data-example.png)](mapping-structured-data-example.png)

이 매핑에서는 [노드 함수](https://www.altova.com/ko/mapforce#node-functions)가 정의되고, 출력 파일의 "Articles" 요소와 그 하위 요소에 적용됩니다. "Articles" 요소 왼쪽에 있는 굵은 글씨의 함수 아이콘을 두 번 클릭하면 해당 노드 함수의 정의가 열립니다.

[![구조화된 데이터 매핑에서 노드 함수를 확인합니다](/blog/images/open-node-function.png)](open-node-function.png)

화면 왼쪽 상단에 있는 "적용 대상" 드롭다운 메뉴는 이 기능이 "Article"의 모든 하위 요소에 적용되도록 설계되었음을 나타냅니다. "기능 설명" 섹션에서는 이 기능이 "round-precision" 함수를 사용할 때 "node_fractionDigits"라는 노드 메타데이터 요소를 매개변수로 사용한다고 설명합니다. 만약 어떤 하위 요소에도 "node_fractionDigits"가 정의되어 있지 않다면, 대신 0이 사용됩니다.

위 이미지에서 상단 중앙에 표시된 "편집" 버튼을 클릭하면 노드 함수에 대한 또 다른 시각을 얻을 수 있습니다. 이를 통해 함수가 자체 데이터 매핑 창에서 열리며, 사용자 정의 함수와 유사한 형태로 표시됩니다

[![구조화된 데이터를 처리하기 위한 노드 함수 정의](/blog/images/node-function-definition.png)](node-function-definition.png)

화면 왼쪽 하단에 있는 "node_fractionDigits" 매핑 항목은 대상 데이터의 구조에 따라 함수에 입력 값을 제공합니다. 이제 "node_fractionDigits"를 찾기 위해 노드 메타데이터를 좀 더 자세히 살펴보겠습니다.

### 노드 메타데이터 정의

구조화된 데이터 파일에 대해 제공되는 노드 메타데이터는 해당 데이터 구조 정의 자체에서 비롯됩니다. 우리의 예에서, 매핑 대상 구성 요소는 XML 문서입니다. 따라서, 어떤 노드에 대해서도 제공되는 메타데이터는 XML 스키마에서 정의됩니다.

아래 이미지는 XMLSpy에서 제공하는 그래픽 스키마 뷰를 통해 보여주는 "PriceCalculation" XML 스키마의 모습입니다

![Altova의 그래픽 XML 스키마 뷰는 구조화된 데이터를 매핑하는 데 사용되는 대상 정보를 시각적으로 보여줍니다](/blog/images/altova-xml-schema-view.png)

다이어그램에서 강조 표시된 "SalePrice" XML 요소는 "Amount" 유형의 인스턴스로 정의되어 있으며, "Amount" 유형은 소수점 이하 최대 2자리까지 표현 가능한 소수입니다. 다이어그램 오른쪽 하단에 있는 "Facets" 창에서 확인할 수 있듯이, "SalePrice" 노드의 "node_fractionDigits" 메타데이터 값은 2입니다.

어떤 구조화된 데이터 파일에 대해서도 사용할 수 있는 노드 함수 파라미터는 항상 데이터 유형(XML, 관계형 데이터베이스, PDF, CSV 파일 등)과 스키마 정의에 포함된 상세 수준에 따라 달라집니다.

### 노드 함수 매개변수를 활용한 구조화된 데이터 매핑

새로운 노드 함수를 생성하면, 먼저 연결되지 않은 원본 값과 결과 값이 표시됩니다. 노드 함수 매개변수를 추가하려면 파란색 "노드 세부 정보 추가" 버튼을 클릭합니다. 그러면 "노드 세부 정보" 대화 상자가 열리고, 여기서 노드 매개변수를 선택할 수 있습니다

![구조화된 데이터를 매핑하기 위한 노드 함수 매개변수를 추가합니다](/blog/images/add-node-function-parameter.png)

특정 노드가 선택된 메타데이터 유형을 지원하지 않는 경우, 해당 옵션을 참고하십시오. 가격 계산 매핑에서 이러한 동작은 노드 함수 정의 내에서 직접 처리됩니다. 노드 함수는 숫자 데이터 유형에만 적용되며, "fractionDigits"가 지정되지 않은 노드에서는 "substitute-missing" 함수가 0을 대신 사용합니다.

### 노드 함수 실행 과정을 관찰하기

출력 구성 요소의 모든 노드에서 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 열고, 내장된 MapForce 디버거를 사용하여 함수 실행 과정을 확인할 수 있습니다.

아래의 부분적인 화면에서, "SalePrice" 변수에 중단점을 설정했습니다. 디버그 메뉴에서 매핑을 실행했고, 실행은 설정된 중단점에서 일시 중지되었으며, 중간 값들이 주 매핑 창에 추가되었습니다.

![내장된 MapForce 디버거를 사용하여 노드 함수의 실행 결과를 확인합니다](/blog/images/node-function-debugging.png)

계산된 마지막 판매 가격(SalePrice) 값은 49.183323875였습니다. 노드 함수는 이 최종 값을 49.18로 반올림했습니다.

메인 매핑 창의 디버깅 결과에서는 실제 노드 함수 실행 과정이 표시되지 않지만, "메시지" 창에서 클릭하면 해당 노드 함수와 함께 중간 값들이 모두 표시됩니다

![Altova MapForce에서 구조화된 데이터를 매핑하는 데 사용되는 메시지 창](/blog/images/messages-window.png)

![내장된 MapForce 디버거에서 노드 함수의 실행 과정을 자세히 확인할 수 있습니다](/blog/images/node-function-debug-result.png)

MapForce에 함께 설치되는 예제에는 다양한 노드 함수 데이터 매핑 기능이 포함되어 있습니다. MapForce의 통합 도움말 시스템에는 처음부터 노드 함수 매핑을 구축하는 방법을 단계별로 설명하는 튜토리얼도 포함되어 있습니다.

여기에서 설명된 예시 매핑을 직접 수정하여 결과가 어떻게 변하는지 확인해 볼 수도 있습니다. 예를 들어, XML 스키마를 수정하여 소수점 이하 자릿수를 세 자리로 늘리거나, 매핑을 변경하여 노드 함수가 "Article"의 첫 번째 자식 노드인 "Number" 노드에서 실행되도록 하고, 변경된 결과를 살펴보세요.

노드 기능이 실제로 어떻게 작동하는지 확인하려면, 이 MapForce 데모 영상을 시청해 보세요.

![](https://www.youtube.com/watch?v=EvuwgaKOkjA)
