본문 바로가기
공부/Notion 노션

노션 관계형 롤업을 이용하여 프로젝트 총 소요 시간 계산하기

by 슈쑥 2023. 7. 18.
반응형

 

 

예전에 만들었던 프로젝트 데이터 베이스에 프로젝트에 투자한 총시간을 표시해보려고 해요.

프로젝트 페이지는 프로젝트/ 태스크 / 리스트로 분류되어 있고 서로 양방향 관계형 속성을 가지고 있어요.

 

프로젝트DB 태스크DB 리스트DB
영어   |170분| 입트영    |110분|  01.A 80분
02.B 30분
귀트영    |60분| 01.a 60분
자격증   |100분} 전산세무    |100분} 01.가 100분

 

이런식으로 각 리스트별 총 소요 시간을 입력해서 태스크별, 프로젝트별 합산된 시간이 뜨게 해 줄거예요.

 

프로젝트 데이터베이스

영어라는 프로젝트 안에 귀트영, 입트영 등등의 태스크가 있고 

태스크 데이터베이스

 

태스크 데이터베이스 안에는 이렇게 각 태스크에 대한 상세 내용이 들어 있습니다.

 


 

리스트 데이터베이스

 

리스트 DB에는 입트영 태스크를 위해 해야 할 것들의 목록을 작성합니다.
숨겨져서 보이지는 않지만 여기에도 태스크 관계형 속성이 들어 있어요.
이 속성을 필터에 이용해서 각 태스크별 리스트로 분류가 가능합니다.

오늘을 여기에 프로젝트에 할애한 총시간을 넣어줄 거예요.
저는 아직 학생이라 총 공부시간을 계산할 겁니다.

먼저 리스트 DB에 사진처럼 공부시간 계산을 위한 숫자 속성을 넣어줍니다.
단순한 숫자 속성이기 때문에 분으로 입력을 해줘야 합니다.
해당 리스트를 완료하는데 1시간이 걸렸다면 60을 입력하면 되겠죠?

 

 

이제 태스크에 리스트의 롤업 속성을 이용하여 공부시간 속성을 가져오고
관계형은 리스트DB, 속성은 공부시간, 계산은 합계로 설정해 주세요.

 

그리고 옆에 수식 속성을 추가하여 사진처럼 롤업 속성의 값을 그대로 가져오도록 해줍니다.
이렇게 굳이 시간 값을 두 개로 만들어주는 이유는 롤업으로 가져온 속성은
다른 데이터베이스에 또 롤업으로 가져갈 수 없기 때문입니다.


즉 프로젝트DB에서 롤업으로 태스크DB의 시간 속성을 가져오려고 해도 아예 뜨지를 않아요.
그래서 같은 값을 가지는 속성을 새로 만들어 주는 겁니다.

 

 

이제 프로젝트DB에 롤업 속성을 추가하여 관계형은 태스크, 속성은 수식, 계산은 합계로 설정해 주시면
영어 프로젝트에 총 공부시간이 뜨게 됩니다. 

마지막으로 저는 분 단위로 뜨는 게 싫어서 "n시간 n분"으로 뜨게 수식 속성을 이용해서 바꿔줄게요.

 

 

format(floor(prop("공부시간") / 60)) + "시간 " + if(format(mod(toNumber(prop("공부시간")), 60)) == "0", "", format(mod(toNumber(prop("공부시간")), 60)) + "분")

작거나 같은 정수 값을 돌려주는 floor 함수를 이용해서 시간을 표시하고,
mod함수를 이용하여 나머지 값이 "0"일 경우에는 공백을, 값이 있을 경우에만 "분"을 표시하도록 해주면 끝입니다.

0시간 40분 -> 40분으로 표시하는 수식

if(format(floor(prop("공부시간") / 60)) == "0", "", format(floor(prop("공부시간") / 60)) + "시간 ") + if(format(mod(toNumber(prop("공부시간")), 60)) == "0", "", format(mod(toNumber(prop("공부시간")), 60)) + "분")

 

반응형

댓글