노션 포뮬러 2.0 `filter()`와 `map()` 함수를 활용해 관계형 데이터베이스에서 특정 조건의 팀원 이름만 추출하여 리스트로 자동 생성하는 방법

노션 포뮬러 2.0: 관계형 데이터 정밀 추출의 핵심 기술

2026년 3월 기준, 노션(Notion)의 데이터 아키텍처는 포뮬러 2.0을 통해 획기적인 발전을 이루었습니다. 관계형 데이터베이스에서 특정 조건에 맞는 팀원의 이름만 리스트로 자동 생성하려면 필터(Filter), 매핑(Map), 결합(Join)으로 이어지는 'FMJ 패턴'을 활용하는 것이 가장 효율적입니다. 기존 1.0 방식의 단순 텍스트 비교가 아닌, '객체 배열'을 다루는 이 방식은 데이터의 정밀도와 속도를 비약적으로 향상시킵니다.

💡 요약 답변: 관계형 속성명 뒤에 .filter(current.조건 == "값")를 붙여 원하는 데이터를 걸러내고, .map(current.이름)을 체이닝하여 필요한 속성만 뽑아낸 뒤, 마지막으로 .join(", ")을 사용해 텍스트로 변환하면 됩니다.

1. 왜 기존의 방식으로는 해결이 안 될까?

많은 사용자가 노션 포뮬러 1.0 시절의 습관으로 수식을 작성하다가 오류에 직면합니다. 과거에는 관계형 속성이 단순한 문자열(String)로 취급되기도 했으나, 2026년 현재의 노션은 이를 완전한 데이터 객체(Object)로 인식합니다.

  • 데이터 구조의 변화: 관계형 속성은 이제 단순한 이름이 아니라, 연결된 페이지의 모든 정보를 품고 있는 배열입니다.
  • 비교 연산의 한계: 팀원 == "홍길동" 식의 수식은 "객체"와 "문자열"을 비교하는 꼴이 되어 항상 거짓(False)을 반환하거나 오류를 일으킵니다.
  • 롤업의 제약: 기본 롤업 기능은 '전체 보기'나 '고유값 보기'는 가능하지만, "특정 프로젝트를 수행 중인 개발자만 추출"하는 식의 복합 필터링은 불가능합니다.
디지털 데이터 시각화 및 노션 워크스페이스 구성
▲ 복잡한 데이터 관계를 논리적으로 해결하는 노션 포뮬러 2.0의 구조

2. 표준 아키텍처: FMJ(Filter-Map-Join) 패턴 분석

노션 전문가들이 권장하는 'FMJ 패턴'은 데이터를 가공하는 가장 깔끔하고 유지보수가 쉬운 방법입니다. 이 프로세스는 2026년 3월 현재 모든 노션 고급 사용자들의 표준이 되었습니다.

Step 1: Filter (조건 걸러내기)

먼저 filter() 함수를 사용하여 관계된 모든 데이터 중 우리가 원하는 조건에 부합하는 항목만 남깁니다. 이때 current 예약어를 사용하여 각 항목의 속성에 접근하는 것이 핵심입니다.

Step 2: Map (필요한 값만 추출하기)

필터링된 결과물은 여전히 '페이지 객체' 덩어리입니다. 여기서 우리는 '이름'이나 '이메일' 등 실제로 화면에 표시하고 싶은 특정 속성값만 map() 함수를 통해 골라냅니다.

Step 3: Join (텍스트로 결합하기)

최종 결과물은 배열 형태 ["이름1", "이름2"]입니다. 이를 보기 좋게 이름1, 이름2 형태로 만들려면 join() 함수를 사용하여 마침표를 찍어줍니다.

⚠️ 주의사항: map()filter()보다 먼저 사용하지 마세요! 데이터를 먼저 텍스트(이름)로 변환해버리면, 그 데이터가 원래 가지고 있던 '역할'이나 '상태' 같은 속성 정보가 사라져 필터링을 할 수 없게 됩니다.

3. 실전 수식 예제 및 응용

실제 업무 환경에서 바로 복사해서 사용할 수 있는 최적화된 수식 구조입니다. 속성명은 본인의 환경에 맞게 수정하여 사용하세요.

/* 기본형: 개발자 팀원 이름만 추출 */
프로젝트_팀원
  .filter(current.역할 == "개발자")
  .map(current.이름)
  .join(", ")

/* 심화형: 데이터가 없을 때 예외 처리 포함 */
let(
  devNames, 
  프로젝트_팀원.filter(current.역할 == "개발자").map(current.이름),
  if(devNames.empty(), "❌ 배정 인원 없음", "👨‍💻 " + devNames.join(" / "))
)

위 수식에서 let 함수를 사용하면 중복 계산을 방지하고 가독성을 크게 높일 수 있습니다. 특히 2026년의 복잡한 프로젝트 관리 대시보드에서는 이러한 변수 활용 능력이 시스템의 성능을 좌우합니다.

노트북 앞에서 코딩하는 개발자의 모습
▲ 수식 체이닝을 통해 효율적인 데이터 파이프라인 구축

4. 방식별 비교: 롤업 vs 포뮬러 2.0

어떤 상황에서 포뮬러 2.0을 사용해야 하는지 비교표를 통해 명확히 확인해 보세요.

비교 항목 기본 롤업(Rollup) 포뮬러 2.0 (FMJ)
조건부 필터링 불가능 (전체만 가능) 매우 자유로움 (AND/OR 가능)
출력 형식 커스텀 고정된 형식만 제공 아이콘, 줄바꿈 등 무한대
성능(대용량 데이터) 안정적 매우 빠름 (최적화 완료)
구현 난이도 매우 낮음 중간 (학습 필요)

* 위 비교 정보는 노션 업데이트 상황에 따라 2026년 이후 변동될 수 있으니 활용 전 확인 바랍니다.

5. 자주 발생하는 오류 및 해결책

✅ "속성을 찾을 수 없음" 오류가 뜹니다

가장 흔한 원인은 current 뒤에 오는 속성명이 실제 관계형 DB의 속성명과 다르기 때문입니다. 특히 띄어쓰기나 대소문자를 정확히 일치시켜야 합니다. 수식 작성 중 나타나는 자동완성 기능을 적극 활용하세요.

✅ 다중 선택(Multi-select) 속성을 필터링하고 싶어요

역할이 하나가 아니라 여러 개일 경우 current.역할 == "개발자" 대신 current.역할.contains("개발자")를 사용해야 합니다. contains 함수는 배열 내에 특정 값이 포함되어 있는지를 확인해 줍니다.

정돈된 사무실 책상과 업무 효율성
▲ 체계적인 데이터 관리는 업무 생산성의 핵심입니다

자주 묻는 질문 (FAQ)

Q1. filter()와 map() 함수는 모바일 앱에서도 작동하나요?

네, 노션 포뮬러 2.0은 모든 플랫폼에서 동일한 엔진을 사용하므로 PC, 태블릿, 스마트폰 환경 어디서든 완벽하게 작동합니다.

Q2. 추출된 이름에 링크를 걸 수 있나요?

네, map() 단계에서 current 자체를 반환하면 노션 페이지 링크가 유지됩니다. 다만 join()을 거쳐 문자열로 변환하면 링크 기능은 사라집니다.

Q3. 필터 조건에 날짜를 사용할 수 있나요?

가능합니다. current.기한 < now()와 같은 형식으로 작성하여 '기한이 지난 항목'만 골라내는 등 날짜 관련 함수와 결합할 수 있습니다.

Q4. 대규모 데이터베이스에서 속도가 느려지진 않나요?

포뮬러 2.0은 서버 측 렌더링 최적화가 되어 있어, 수천 개의 데이터를 처리하더라도 기존 1.0 방식보다 훨씬 빠른 속도를 보장합니다.

Q5. 이 기능은 무료 버전 사용자도 쓸 수 있나요?

네, 노션 포뮬러 기능은 요금제와 관계없이 모든 사용자에게 개방되어 있는 핵심 기능입니다.

본 포스팅은 2026년 3월 10일 기준 노션 업데이트 사항을 바탕으로 작성되었습니다.
기술적 오류가 있거나 질문이 있으시면 댓글로 남겨주세요.
ⓒ 2026 Notion Expert Team. All rights reserved.

댓글

이 블로그의 인기 게시물

윈도우 11 '연결됨, 인터넷 없음' 오류 해결: DNS 캐시 초기화와 IPv4 수동 설정 가이드

챗봇의 외부 DB 연동 오류 해결: Botpress의 Execute Code와 Voiceflow의 API Step을 활용한 JSON 데이터 파싱 및 변수 매핑 비교