G: 안녕하세요, 자동화와 데이터 처리의 세계에 오신 것을 환영합니다! 🚀
복잡한 데이터를 다루다 보면, 원하는 형식으로 가공하는 것이 여간 까다로운 일이 아닙니다. 특히 여러 시스템 간에 데이터를 주고받을 때, 각 시스템이 요구하는 데이터 형식이 달라서 애를 먹는 경우가 많죠. 이럴 때 n8n의 “Set Node”는 여러분의 워크플로우를 훨씬 유연하고 강력하게 만들어주는 마법의 지팡이가 될 수 있습니다! ✨
Set Node는 n8n에서 데이터의 모양을 자유자재로 조작하는 데 사용되는 핵심 노드입니다. 단순히 값을 추가하는 것을 넘어, 기존 필드의 이름을 바꾸거나, 불필요한 필드를 제거하고, 심지어는 조건에 따라 값을 동적으로 설정하는 등 상상 이상의 일들을 해낼 수 있습니다.
오늘은 Set Node의 기본적인 기능부터 고급 활용법까지, 10가지 실용적인 예시를 통해 마스터하는 시간을 가져보겠습니다. 이 글을 다 읽고 나면, 어떤 복잡한 데이터라도 Set Node 하나로 손쉽게 처리할 수 있게 될 거예요! 💪
💡 n8n Set Node, 대체 뭘 하는 노드인가요?
n8n의 Set Node는 워크플로우에서 전달되는 아이템(Item)의 데이터를 조작하는 데 특화된 노드입니다. 주로 다음과 같은 목적으로 사용됩니다:
- 필드 추가 (Add): 새로운 데이터 필드를 추가하고 값을 할당합니다.
- 필드 수정 (Modify): 기존 필드의 값을 변경하거나, 다른 필드의 값을 조합하여 새로운 값을 만듭니다.
- 필드 이름 변경 (Rename): 기존 필드의 이름을 바꿉니다. (최신 버전 Set Node는 Operation 드롭다운에서 바로 Rename을 제공합니다.)
- 필드 제거 (Delete): 불필요한 데이터 필드를 삭제하여 데이터를 간결하게 만듭니다.
Set Node의 가장 큰 강점은 표현식(Expressions)을 활용하여 데이터를 동적으로 처리할 수 있다는 점입니다. $json
객체를 통해 현재 아이템의 모든 데이터에 접근할 수 있으며, 자바스크립트 문법을 사용하여 복잡한 로직을 구현할 수 있습니다.
또한, Set Node는 데이터를 처리하는 “모드(Mode)”를 선택할 수 있습니다:
- Add/Merge (기본값): 설정된 필드를 추가하거나, 이미 존재하는 필드라면 값을 덮어씁니다.
- Keep: 설정된 필드만 남기고 나머지는 모두 삭제합니다. 데이터 정제에 매우 유용합니다.
- Delete: 설정된 필드를 삭제합니다.
이제 이 강력한 Set Node를 활용하는 10가지 예시를 자세히 살펴볼까요? 🛠️
n8n Set Node 10가지 사용 예시로 데이터 마스터하기!
각 예시마다 Input JSON (입력 데이터)
, Set Node 설정 (또는 표현식)
, Output JSON (출력 데이터)
을 명확히 제시하여 이해를 돕겠습니다.
1. 새로운 정적 필드 추가 ✨
가장 기본적인 사용법입니다. 모든 아이템에 동일한 새로운 필드와 값을 추가할 때 사용합니다.
- 시나리오: 특정 작업이 완료되었음을 나타내는
status
필드를 모든 데이터에 추가하고 싶을 때. - Input JSON:
{ "orderId": "ABC-123", "customerName": "김영희" }
- Set Node 설정:
- Operation: Add
- Value: String
- Key:
status
- Value:
처리 완료
- Output JSON:
{ "orderId": "ABC-123", "customerName": "김영희", "status": "처리 완료" }
- 팁: 워크플로우의 특정 단계에서 일괄적으로 상태를 부여하거나, API 요청에 필요한 고정 값을 추가할 때 유용합니다.
2. 기존 필드 이름 변경 🏷️
외부 API나 다른 시스템으로 데이터를 보낼 때, 필드 이름 규칙(예: snake_case
를 camelCase
로)을 맞춰야 하는 경우가 많습니다.
- 시나리오:
first_name
과last_name
필드를firstName
과lastName
으로 변경하고 싶을 때. - Input JSON:
{ "order_id": "DEF-456", "first_name": "박", "last_name": "준영" }
- Set Node 설정:
- Operation: Rename
- Old Name:
order_id
/ New Name:orderId
- Old Name:
first_name
/ New Name:firstName
- Old Name:
last_name
/ New Name:lastName
- Output JSON:
{ "orderId": "DEF-456", "firstName": "박", "lastName": "준영" }
- 팁: Set Node의 “Operation” 드롭다운을 “Rename”으로 설정하면 여러 필드를 한 번에 변경할 수 있어 편리합니다.
3. 불필요한 필드 제거 🗑️
데이터를 다음 단계로 전달하기 전에, 불필요하거나 민감한 정보를 제거하여 데이터를 정제할 수 있습니다.
- 시나리오: 데이터베이스에서 가져온 결과 중 내부적으로만 사용하는
_id
나__v
필드를 제거하고 싶을 때. - Input JSON:
{ "id": 101, "name": "새 상품", "description": "아주 좋은 상품입니다.", "_internal_code": "XYZ789", "created_at": "2023-10-26T10:00:00Z" }
- Set Node 설정:
- Mode: Delete
- Fields:
_internal_code
created_at
- Output JSON:
{ "id": 101, "name": "새 상품", "description": "아주 좋은 상품입니다." }
- 팁:
Mode
를Delete
로 설정하고 제거할 필드를 지정하는 것이 가장 직관적입니다. 혹은Mode
를Keep
으로 설정하고 유지할 필드만 지정하는 방법도 있습니다.
4. 기존 필드 값을 조합하여 새 필드 생성 🧩
여러 필드의 값을 합쳐 새로운 의미 있는 필드를 만들 수 있습니다.
- 시나리오:
firstName
과lastName
을 합쳐fullName
필드를 만들고 싶을 때. - Input JSON:
{ "firstName": "이", "lastName": "지은", "email": "jieun.lee@example.com" }
- Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
fullName
- Value Expression:
{{ $json.firstName + ' ' + $json.lastName }}
- Output JSON:
{ "firstName": "이", "lastName": "지은", "email": "jieun.lee@example.com", "fullName": "이 지은" }
- 팁: 문자열 조합뿐만 아니라 숫자 필드를 합산(
$json.price + $json.tax
)하거나 복잡한 계산식도 가능합니다.
5. 조건에 따른 필드 값 동적 설정 🤔
삼항 연산자(Ternary Operator)를 사용하여 특정 조건에 따라 필드 값을 다르게 설정할 수 있습니다.
- 시나리오: 주문 총액이 특정 금액 이상이면
customerType
을 ‘VIP’로, 아니면 ‘일반’으로 설정하고 싶을 때. - Input JSON:
{ "orderId": "GHI-789", "orderTotal": 150000, "currency": "KRW" }
- Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
customerType
- Value Expression:
{{ $json.orderTotal >= 100000 ? 'VIP' : '일반' }}
- Output JSON:
{ "orderId": "GHI-789", "orderTotal": 150000, "currency": "KRW", "customerType": "VIP" }
- 팁: 이 기능은
IF
노드 없이도 간단한 조건부 로직을 데이터 자체에 내장할 수 있게 해주어 워크플로우를 간결하게 만듭니다.
6. 배열 내 특정 객체/값 추출 및 가공 🛒
API 응답에서 자주 볼 수 있는 배열 형태의 데이터에서 특정 값을 추출하여 새로운 필드로 만들 수 있습니다.
- 시나리오:
products
배열 내 각 상품의name
만 추출하여 쉼표로 구분된 문자열로 만들고 싶을 때. - Input JSON:
{ "cartId": "CART-001", "products": [ { "id": 1, "name": "노트북", "price": 1200000 }, { "id": 2, "name": "무선 마우스", "price": 50000 } ] }
- Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
productNamesList
- Value Expression:
{{ $json.products.map(product => product.name).join(', ') }}
- Output JSON:
{ "cartId": "CART-001", "products": [ { "id": 1, "name": "노트북", "price": 1200000 }, { "id": 2, "name": "무선 마우스", "price": 50000 } ], "productNamesList": "노트북, 무선 마우스" }
- 팁:
map()
,filter()
,reduce()
와 같은 자바스크립트 배열 메서드를 활용하면 배열 데이터를 매우 강력하게 가공할 수 있습니다.
7. 데이터 타입 변환 ↔️
숫자인데 문자열로 되어 있거나, 그 반대인 경우 데이터를 다음 시스템에 보내기 전에 타입을 변경해야 할 때가 있습니다.
- 시나리오:
amount
필드가 문자열 “12500”으로 되어 있어 계산이 불가능할 때, 이를 실제 숫자 타입으로 변환하고 싶을 때. - Input JSON:
{ "transactionId": "TXN-005", "amount": "12500", "currency": "USD" }
- Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
parsedAmount
- Value Expression:
{{ parseInt($json.amount) }}
- Output JSON:
{ "transactionId": "TXN-005", "amount": "12500", "currency": "USD", "parsedAmount": 12500 }
- 팁:
parseInt()
,parseFloat()
,String()
(또는.toString()
) 등을 사용하여 원하는 타입으로 변환할 수 있습니다. 날짜 문자열을 Date 객체로 변환할 때는new Date()
를 사용하기도 합니다.
8. 필드에 기본값 설정 (null 또는 undefined일 때) 🛡️
데이터가 누락되었을 때 오류를 방지하거나, 기본값을 설정하여 처리의 일관성을 유지할 수 있습니다.
- 시나리오:
notes
필드가 비어 있거나null
일 경우, “기록 없음”이라는 기본값을 설정하고 싶을 때. - Input JSON:
{ "meetingId": "M-007", "title": "주간 보고 회의", "notes": null }
(또는
{"meetingId": "M-007", "title": "주간 보고 회의"}
–notes
필드 자체가 없을 수도 있습니다.) - Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
notes
(기존 필드를 덮어씁니다) - Value Expression:
{{ $json.notes || '기록 없음' }}
- Output JSON:
{ "meetingId": "M-007", "title": "주간 보고 회의", "notes": "기록 없음" }
- 팁:
||
(OR) 연산자를 사용하여 왼쪽 값이null
,undefined
,,
""
,false
일 경우 오른쪽 값을 기본값으로 사용하게 할 수 있습니다.
9. 중첩된 객체 필드 평탄화/직접 접근 🗺️
깊게 중첩된 JSON 구조에서 필요한 값을 바로 추출하여 최상위 필드로 만들 때 유용합니다.
- 시나리오:
user
객체 안에address
객체가 있고, 그 안에city
가 있을 때,userCity
라는 새로운 필드에city
값을 할당하고 싶을 때. - Input JSON:
{ "eventId": "EVT-123", "user": { "id": "U-456", "name": "김민지", "address": { "street": "테헤란로", "city": "서울", "zipCode": "06130" } } }
- Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
userCity
- Value Expression:
{{ $json.user.address.city }}
- Key:
userStreet
- Value Expression:
{{ $json.user.address.street }}
- Output JSON:
{ "eventId": "EVT-123", "user": { "id": "U-456", "name": "김민지", "address": { "street": "테헤란로", "city": "서울", "zipCode": "06130" } }, "userCity": "서울", "userStreet": "테헤란로" }
- 팁:
$json.필드명.하위필드명.최하위필드명
과 같이.
(점) 표기법을 사용하여 깊은 계층의 데이터에 접근할 수 있습니다.
10. 여러 필드를 묶어 새로운 JSON 객체 생성 📦
여러 개의 개별 필드를 묶어 하나의 새로운 중첩된 JSON 객체로 만들 때 사용합니다. API 요청 페이로드를 특정 형식으로 구성해야 할 때 매우 유용합니다.
- 시나리오:
productName
과productQuantity
를 묶어itemDetails
라는 새로운 객체를 생성하고 싶을 때. - Input JSON:
{ "orderNumber": "ORD-789", "productName": "무선 이어폰", "productQuantity": 2, "unitPrice": 150000 }
- Set Node 설정:
- Operation: Add
- Value: Expression
- Key:
itemDetails
- Value Expression:
{{ { "name": $json.productName, "quantity": $json.productQuantity, "totalPrice": $json.productQuantity * $json.unitPrice } }}
- Output JSON:
{ "orderNumber": "ORD-789", "productName": "무선 이어폰", "productQuantity": 2, "unitPrice": 150000, "itemDetails": { "name": "무선 이어폰", "quantity": 2, "totalPrice": 300000 } }
- 팁:
{{ { "키": 값, "다른키": 다른값 } }}
형태로 중괄호를 두 번 사용하여 JSON 객체를 생성하고 할당할 수 있습니다.
Set Node 활용 시 추가 팁 및 모범 사례 🌟
- 작은 단위로 테스트하세요: 복잡한 변환을 한 번에 하려 하지 말고, Set Node를 여러 개 사용하여 단계를 나누고 각 단계마다 테스트하여 예상대로 동작하는지 확인하는 것이 좋습니다.
- 표현식을 적극 활용하세요: Set Node의 진정한 힘은 표현식에서 나옵니다. 자바스크립트의 기본 문법을 익히면 거의 모든 데이터 조작이 가능해집니다.
$json
이해하기:$json
은 현재 처리 중인 아이템의 전체 데이터를 나타냅니다. 이 객체의 구조를 이해하고 올바르게 접근하는 것이 중요합니다.Keep
및Delete
모드 활용: 불필요한 데이터를 제거하고 필요한 데이터만 남기는 것은 워크플로우의 효율성과 가독성을 높이는 좋은 방법입니다.- 다른 노드와 함께 사용: Set Node는 단독으로도 강력하지만,
Code
노드로 복잡한 자바스크립트 로직을 구현하거나,IF
노드로 분기를 처리하고,Merge
노드로 데이터를 합치는 등 다른 노드들과 결합할 때 그 시너지가 극대화됩니다.
마무리하며 🎉
n8n의 Set Node는 단순한 데이터 조작 노드를 넘어, 복잡한 데이터 처리 문제를 해결하는 데 필수적인 도구입니다. 오늘 살펴본 10가지 예시들은 Set Node로 할 수 있는 일의 극히 일부에 불과하지만, 이 예시들을 통해 Set Node의 다양한 활용 가능성과 잠재력을 엿보셨기를 바랍니다.
이제 여러분은 어떤 종류의 데이터가 워크플로우로 들어오든, Set Node를 사용하여 원하는 형태로 가공하고 다음 단계로 매끄럽게 전달할 수 있는 능력을 갖추게 되었습니다! 🥳
가장 좋은 학습 방법은 직접 해보는 것입니다. n8n 워크플로우에서 Set Node를 추가하고, 다양한 데이터를 입력해보며 오늘 배운 예시들을 직접 구현해보세요. 꾸준히 연습하다 보면, Set Node는 여러분의 가장 친한 자동화 친구가 될 것입니다.
궁금한 점이나 더 다뤄줬으면 하는 주제가 있다면 언제든지 댓글로 남겨주세요! 다음에도 유용한 n8n 팁으로 찾아오겠습니다.
해피 오토메이션! 🤖✨