Skip to main content
Summary

수식은 노션에게 판단 기준을 알려주는 일이다

데이터베이스를 쓰다 보면 반복해서 확인하는 일이 생긴다. 마감일이 지났는지, 며칠 남았는지, 완료율이 몇 퍼센트인지, 어떤 업무가 더 급한지 매번 눈으로 계산하게 된다. 항목이 몇 개 없을 때는 괜찮지만, 작업과 프로젝트가 늘어나면 금방 놓친다.

이때 사용하는 기능이 수식이다. 수식은 노션 데이터베이스 안에 만드는 계산 속성이다. 숫자를 더하는 계산기 역할도 하지만, 더 중요한 역할은 조건에 따라 상태를 판단하고 보기 좋게 표시하는 것이다.

예를 들어 작업 데이터베이스에 다음 속성이 있다고 하자.

속성유형역할
업무명제목해야 할 일의 이름
상태상태할 일, 진행 중, 완료
마감일날짜언제까지 해야 하는지
예상 시간숫자걸릴 것으로 예상한 시간
실제 시간숫자실제 사용한 시간
완료체크박스끝났는지 여부
중요도선택 또는 숫자업무의 중요도

여기에 수식 속성을 추가하면 D-3, 지연, 80%, 주의 같은 값을 자동으로 만들 수 있다. 사람이 매번 판단하던 일을 데이터베이스가 대신 처리하는 것이다.

수식은 처음부터 길게 만들 필요가 없다. 좋은 수식은 복잡한 수식이 아니라, 반복 판단을 줄여주는 수식이다.

수식과 자동 계산으로 스마트한 시스템 만들기AI 생성 이미지

마감일까지 남은 일수 계산하기

가장 먼저 만들기 좋은 수식은 마감일까지 남은 일수다. 마감일은 대부분의 업무 관리에서 가장 중요한 기준이다. 하지만 날짜만 있으면 오늘 기준으로 얼마나 급한지 바로 보이지 않는다.

작업 데이터베이스에 남은 일수라는 수식 속성을 만들고 다음처럼 입력한다.

if(
  empty(prop("마감일")),
  "마감일 없음",
  format(dateBetween(prop("마감일"), today(), "days")) + "일"
)

이 수식은 세 단계로 읽으면 쉽다.

  1. 마감일이 비어 있으면 마감일 없음이라고 표시한다.

  2. 마감일이 있으면 오늘부터 마감일까지 며칠 남았는지 계산한다.

  3. 계산한 숫자 뒤에 일이라는 글자를 붙인다.

여기서 dateBetween()은 두 날짜 사이의 차이를 계산하는 함수다. today()는 현재 날짜를 뜻한다. format()은 숫자를 글자로 바꾸는 함수다. 숫자와 글자를 함께 붙여 보여주려면 숫자를 글자로 변환해야 한다.

노션 수식 예시에서는 now()도 자주 보게 된다. now()는 현재 날짜뿐 아니라 시간까지 포함한다. 마감 시간이 있는 업무라면 now()가 더 적합할 수 있지만, 날짜만 입력한 마감일을 비교할 때는 today()가 더 직관적이다. 예를 들어 오늘 마감인 업무를 시간 때문에 애매하게 계산하고 싶지 않다면 today()를 쓰는 편이 낫다.

이 수식을 만들면 마감일이 가까운 업무를 눈으로 세지 않아도 된다. 표 보기에서는 남은 일수를 보이게 하고, 달력 보기에서는 필요 없으면 숨기면 된다. 같은 데이터라도 보기마다 필요한 속성이 다르기 때문이다.

다만 이 수식에는 한 가지 주의점이 있다. 결과가 3일, -1일처럼 표시되기 때문에 사람이 읽기는 좋지만, 숫자로 정렬하기에는 불편할 수 있다. 그래서 실무에서는 계산용 속성과 표시용 속성을 나누는 편이 좋다.

예를 들어 남은 일수 계산이라는 수식 속성에는 숫자만 남긴다.

if(
  empty(prop("마감일")),
  9999,
  dateBetween(prop("마감일"), today(), "days")
)

여기서 마감일이 비어 있을 때 9999를 넣은 이유는 계산 속성을 계속 숫자로 유지하기 위해서다. 이렇게 해두면 마감일이 없는 항목은 정렬했을 때 자연스럽게 뒤로 밀린다. 숫자가 너무 임의적이라고 느껴진다면, 마감일이 있는 항목만 따로 필터링하는 보기를 만들어도 된다.

그리고 남은 일수 표시라는 수식 속성에서 보기 좋게 바꾼다.

if(
  empty(prop("마감일")),
  "마감일 없음",
  format(prop("남은 일수 계산")) + "일 남음"
)

처음에는 속성이 많아 보여도, 이렇게 나누면 나중에 필터와 정렬을 만들기 훨씬 쉽다.

지연 여부를 자동으로 표시하기

남은 일수를 계산했다면 다음은 상태 판단이다. 우리가 알고 싶은 것은 단순히 날짜 차이가 아니다. 실제로 필요한 질문은 이것이다.

"이 업무는 정상인가, 주의가 필요한가, 이미 지연됐는가?"

이 질문에 답하는 수식 속성을 마감 상태라고 만들어보자.

if(
  prop("완료"),
  "완료",
  if(
    empty(prop("마감일")),
    "마감일 없음",
    if(
      prop("남은 일수 계산") < 0,
      "지연",
      if(
        prop("남은 일수 계산") <= 2,
        "주의",
        "정상"
      )
    )
  )
)

길어 보이지만 구조는 단순하다.

  • 완료된 업무면 무조건 완료

  • 마감일이 없으면 마감일 없음

  • 마감일이 지났으면 지연

  • 2일 이내로 남았으면 주의

  • 그 외에는 정상

이 수식의 핵심은 if()다. if()는 "만약 A라면 B, 아니면 C"라는 뜻이다. 조건이 여러 개일 때는 if() 안에 다시 if()를 넣어 단계별로 판단한다.

여기서 중요한 순서는 완료를 먼저 확인한다는 점이다. 이미 끝난 업무는 마감일이 지났더라도 지연으로 보일 필요가 없다. 수식은 위에서부터 순서대로 판단하므로, 예외를 먼저 처리해야 결과가 자연스럽다.

또 하나 눈여겨볼 점은 dateBetween()을 다시 쓰지 않고 남은 일수 계산 속성을 가져왔다는 것이다. 같은 계산을 여러 수식에 반복해서 넣으면 나중에 기준을 바꾸기 어렵다. 계산은 한 곳에서 하고, 다른 수식은 그 결과를 가져다 쓰는 편이 유지보수에 좋다.

이제 보기에서 마감 상태를 기준으로 필터를 만들 수 있다.

  • 마감 상태가 지연인 업무만 보기

  • 마감 상태가 주의 또는 지연인 업무만 보기

  • 마감 상태가 완료가 아닌 업무만 보기

이렇게 하면 수식은 단순한 표시가 아니라 업무 화면을 자동으로 정리하는 기준이 된다.

진행률을 숫자로 계산하기

프로젝트 관리에서는 "얼마나 끝났는가"를 자주 확인한다. 이전 장에서 롤업으로 연결된 작업의 완료율을 가져오는 방법을 다뤘다면, 이번에는 한 데이터베이스 안에서 숫자와 체크박스를 조합해 진행률을 계산해보자.

가장 단순한 예시는 체크박스를 숫자로 바꾸는 것이다. 완료 점수라는 수식 속성을 만든다.

if(prop("완료"), 1, 0)

완료 체크가 되어 있으면 1, 아니면 0이다. 이 값은 나중에 롤업으로 합산하거나 평균을 낼 수 있다. 예를 들어 프로젝트에 연결된 작업들의 완료 점수 평균을 구하면 전체 완료율이 된다.

좀 더 직접적인 계산도 가능하다. 어떤 업무에 전체 단계와 완료 단계라는 숫자 속성이 있다고 하자. 그러면 진행률 수식은 이렇게 만들 수 있다.

if(
  or(empty(prop("전체 단계")), prop("전체 단계") == 0),
  0,
  round(prop("완료 단계") / prop("전체 단계") * 100)
)

전체 단계가 비어 있거나 0이면 나눗셈을 할 수 없으므로 먼저 0을 반환한다. 그 외에는 완료 단계를 전체 단계로 나누고 100을 곱해 퍼센트로 만든다. round()는 소수점을 반올림한다.

숫자 속성에서는 0도 중요한 값일 때가 있다. 예를 들어 실제 비용이 0원인 것과 아직 입력하지 않은 것은 업무상 의미가 다를 수 있다. 수식을 만들 때는 "빈 값과 0을 같은 것으로 볼 것인지"를 먼저 정해두는 것이 좋다. 진행률처럼 전체 단계가 0이면 계산 자체가 불가능한 경우에는 위처럼 0과 빈 값을 함께 막아도 괜찮다.

표시를 더 읽기 좋게 만들고 싶다면 별도의 표시 속성을 만든다.

format(prop("진행률")) + "%"

여기서도 계산 속성과 표시 속성을 나누는 습관이 중요하다. 진행률은 숫자로 남겨야 정렬, 필터, 롤업에 쓰기 좋다. 진행률 표시는 사람이 읽기 좋게 꾸미는 역할만 맡긴다.

예산과 우선순위 점수 계산하기

수식은 업무뿐 아니라 예산 관리에도 유용하다. 프로젝트 데이터베이스에 예상 비용, 실제 비용, 예산 속성이 있다고 하자. 예산 차이 수식은 이렇게 만들 수 있다.

prop("예산") - prop("실제 비용")

값이 양수면 예산이 남은 것이고, 음수면 초과한 것이다. 여기에 상태 라벨을 붙이면 더 실용적이다.

if(
  empty(prop("예산")),
  "예산 없음",
  if(
    prop("실제 비용") > prop("예산"),
    "예산 초과",
    if(
      prop("실제 비용") > prop("예산") * 0.8,
      "주의",
      "정상"
    )
  )
)

이 수식은 예산이 비어 있으면 먼저 예산 없음으로 표시한다. 예산이 있을 때 실제 비용이 예산을 넘으면 예산 초과, 예산의 80%를 넘으면 주의, 그 외에는 정상으로 표시한다. 팀에서는 이 값을 기준으로 예산 회의에서 먼저 볼 프로젝트를 추릴 수 있다.

개인 업무 관리에서는 우선순위 점수를 만들 수 있다. 예를 들어 중요도와 긴급도를 각각 1~5 숫자로 입력한다면 우선순위 점수는 다음처럼 계산한다.

prop("중요도") * 2 + prop("긴급도")

중요도에 가중치를 더 크게 준 이유는 급한 일만 따라가다 보면 중요한 일이 밀리기 쉽기 때문이다. 물론 상황에 따라 다르게 설계할 수 있다.

  • 고객 응대 중심 업무: 긴급도 비중을 높인다.

  • 장기 목표 관리: 중요도 비중을 높인다.

  • 팀 프로젝트 관리: 마감일, 영향도, 담당자 부담을 함께 본다.

수식의 목적은 정답을 만드는 것이 아니다. 내가 어떤 기준으로 일을 먼저 볼지 명확히 만드는 것이다.

텍스트를 조합해 보기 좋은 표시 만들기

데이터베이스 항목이 많아지면 제목만으로 구분하기 어려울 때가 있다. 예를 들어 고객 프로젝트를 관리할 때 고객명, 프로젝트명, 회차가 따로 있으면 표에서는 괜찮지만, 다른 데이터베이스와 연결하거나 검색할 때 항목의 맥락이 부족해 보일 수 있다.

이럴 때 텍스트 조합 수식을 사용한다.

prop("고객명") + " / " + prop("프로젝트명") + " / " + format(prop("회차")) + "회차"

결과는 다음처럼 표시된다.

에이콘컴퍼니 / 홈페이지 개편 / 3회차

이 방식은 팀 협업에서 특히 유용하다. 여러 사람이 같은 데이터베이스를 볼 때 항목 이름이 애매하면 잘못 이해하거나 중복 항목을 만들기 쉽다. 표시용 수식으로 맥락을 충분히 보여주면 표와 목록에서 훨씬 빠르게 구분할 수 있다.

단, 수식으로 만든 값은 제목 속성 자체를 대체하지는 않는다. 노션 데이터베이스의 제목 속성은 여전히 별도로 존재하고, 관계형 속성에서 항목을 고를 때도 제목이 가장 먼저 보인다. 그래서 실무에서는 제목도 최소한 구분 가능하게 만들고, 표시용 수식으로 보조 정보를 더해주는 방식이 좋다.

예를 들어 제목은 홈페이지 개편처럼 너무 짧게만 두기보다 에이콘컴퍼니 홈페이지 개편 정도로 구분 가능하게 만들 수 있다. 그리고 표시 속성은 에이콘컴퍼니 / 홈페이지 개편 / 3회차처럼 더 풍부한 맥락을 보여준다. 이렇게 하면 제목은 과하게 길어지지 않으면서도, 필요한 곳에서는 충분한 정보를 제공할 수 있다.

수식이 길어질수록 속성을 나누기

수식을 쓰다 보면 하나의 속성에 모든 계산을 넣고 싶어진다. 하지만 수식이 길어질수록 수정하기 어렵고, 오류가 생겨도 어디가 문제인지 찾기 힘들다.

그래서 수식이 복잡해질 때는 속성을 세 종류로 나누는 것이 좋다.

구분예시역할
원본 속성마감일, 완료, 예산, 실제 비용사람이 직접 입력하는 값
계산 속성남은 일수 계산, 진행률, 예산 차이정렬과 필터에 쓰는 숫자 또는 논리값
표시 속성마감 상태, 진행률 표시, 예산 라벨사람이 읽기 좋게 보여주는 값

예를 들어 마감 관리 시스템을 이렇게 구성할 수 있다.

  1. 마감일: 사람이 입력하는 날짜

  2. 완료: 사람이 체크하는 완료 여부

  3. 남은 일수 계산: 날짜 차이를 숫자로 계산

  4. 마감 상태: 정상, 주의, 지연 표시

  5. 오늘 확인: 오늘 봐야 하는 업무인지 판단

오늘 확인 수식은 다음처럼 만들 수 있다.

and(
  not(prop("완료")),
  not(empty(prop("마감일"))),
  prop("남은 일수 계산") <= 2
)

이 수식은 완료되지 않았고, 마감일이 있으며, 남은 일수가 2일 이하인 업무를 true로 표시한다. 수식 결과가 참/거짓으로 나오면 노션에서는 체크박스처럼 볼 수 있다. 이후 보기 필터에서 오늘 확인이 체크된 항목만 보여주면 된다.

이 구조의 장점은 유지보수다. 나중에 "2일 이내"가 아니라 "3일 이내"로 바꾸고 싶다면 오늘 확인 수식만 수정하면 된다. 마감 상태의 문구를 바꾸고 싶다면 표시 속성만 고치면 된다. 원본 데이터는 그대로 둔다.

수식을 사용할 때 흔한 실수

수식을 처음 사용할 때 자주 생기는 실수는 세 가지다.

첫째, 빈 값을 고려하지 않는 것이다. 마감일이 비어 있는데 날짜 계산을 하거나, 전체 단계가 0인데 나눗셈을 하면 예상과 다른 결과가 나올 수 있다. 그래서 empty() 조건을 먼저 넣는 습관이 필요하다. 다만 숫자 속성에서는 0도 업무상 의미가 있을 수 있으므로, 빈 값과 0을 같은 기준으로 처리해도 되는지 확인해야 한다.

둘째, 표시용 글자와 계산용 숫자를 섞는 것이다. 3일 남음처럼 보기 좋은 값은 사람이 읽기에는 좋지만 숫자 정렬이나 추가 계산에는 적합하지 않다. 계산은 숫자로, 표시는 글자로 나누는 편이 안전하다.

셋째, 수식이 실제 업무 흐름보다 앞서가는 것이다. 아직 상태 값도 안정되지 않았는데 복잡한 자동 라벨을 만들면 오히려 관리가 어려워진다. 먼저 사람이 직접 쓰는 속성을 안정시키고, 반복 판단이 분명해졌을 때 수식으로 바꾸는 것이 좋다.

수식은 노션을 똑똑하게 만드는 기능이지만, 모든 것을 자동화해야 한다는 뜻은 아니다. 자주 확인하는 기준, 실수하기 쉬운 계산, 팀원이 같은 방식으로 판단해야 하는 항목부터 자동화하면 충분하다.

작은 자동 계산 시스템 완성하기

지금까지 만든 속성을 조합하면 작업 데이터베이스는 단순한 할 일 목록에서 작은 업무 판단 시스템으로 바뀐다.

  • 남은 일수 계산으로 마감까지의 거리를 숫자로 본다.

  • 마감 상태로 정상, 주의, 지연을 자동 판단한다.

  • 진행률로 업무나 프로젝트의 완료 정도를 계산한다.

  • 예산 라벨로 비용 위험을 빠르게 확인한다.

  • 표시용 제목으로 고객, 프로젝트, 회차를 읽기 좋게 묶는다.

핵심은 매번 직접 계산하던 일을 노션에게 맡기는 것이다. 사람은 판단 기준을 설계하고, 노션은 그 기준에 따라 반복 계산을 수행한다.

다음 단계에서는 이 수식들을 개인 생산성 시스템에 연결할 수 있다. 오늘 해야 할 일, 이번 주 집중 업무, 밀린 작업, 진행 중인 목표를 자동으로 걸러내면 대시보드는 더 이상 장식용 페이지가 아니다. 매일 열었을 때 바로 행동을 시작하게 해주는 실행 화면이 된다.

책 목록

노션 활용법: 개인 생산성부터 팀 협업 시스템까지

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기