구글시트 - 다른 파일의 데이터 참조하기(query, importrange)
구글시트는 기본적으로 구글 드라이브에 모든 파일이 저장되어있다. 다른 파일이나 영역을 참조해서 데이터를 불러올때는 어떻게 해야할까?
인원현황4, 인원현황5 두 개의 파일(워크북)을 구글 드라이브에서 생성했다고 가정을 하자. 인원현황4 파일에서 인원현황5의 특정 영역이나, 테이블을 참조해서 사용하고자 한다. 가장 먼저 해야할 일을 파일의 경로(url)을 알아야 할 것이다.
기본적으로 워크북을 켜면 수정(edit)모드에 있고, 아래와 같은 주소가 브라우저에 표기가 될 것이다.
/edit 이전 url이 해당 문서의 경로(url) 되시겠다.
https://docs.google.com/spreadsheets/d/1gwY9LsvkfDbxH5AEsHO5bL2A5cm1GKijeIEzvpPTQHs/edit?gid=0#gid=0
다른 워크북에서의 영역 참조시 importrange 함수를 사용할 수 있다. 구글 시트의 또 다른 강점인 실시간 example을 보면 아주 친절하게 나와있다.
IMPORTRANGE(spreadsheet_url, range_string)
→ spreadsheet_url : 위에서 알아낸 주소, 문자(string) 값으로 처리 - " " 안에 기재
→ range_string : 참조할 영역의 주소값, 문자(string)값으로 처리 - " " 안에 기재
나의 경우, 인원현황4 시트의 임의에 셀에 시트의 주소값을 넣어놓았다. 해당 내용을 호출하게 되면, 참조에러(#REF!)가 뜨는데, 마우스를 오버하면, 권한을 승인할 것인지, 팝업창이 뜨는데, Allow access를 클릭하여 승인해준다.
권한 승인이 확인되면, 아래와 같이 값이 불러와 진다. 일단 테스트로 Sheet1 의 a1셀만 참조해보았다.
인원현황5 파일(워크북)의 특정영역을 통째로 참조한다면 별 문제가 없지만, 일부만 가공을 해서 가지고 온다면, query 함수를 사용할 수있다. 예를 들어 아래 인원현황5 시트에서 소속이 '서울대' 아니면 '경기대'인 경우만 값을 호출하고 싶다고 하자.
sql문을 query 함수에 쳐주면 된다.
select * 문을 통해 모든 column을 참조한다.
where 문을 사용하여, 조건을 기재해준다. 조건열은 호출되는 테이블을 기준으로 Col1, Col2 로 기재를 한다. sql문을 작성하기 시작할때, 큰따옴표("")를 이미 사용했으므로, 조건에 텍스트를 작성할때 큰따옴표("") 대신 작은따옴표('')를 사용한다.
두개의 조건을 연결할 때는 or 조건을 사용한다. 맨 마지막 header 옵션을 통해 header를 표시할지 말지를 결정한다. 결과물은 아래와 같다. sql 관련해서는 구체적으로 적기에 내 지식이 부족하다. 수많은 레퍼런스들이 있으므로 참고해서 작성하면 된다.
여러개의 시트가 동일한 sql 조건을 가지는 경우, 다수의 시트를 참조하는데 사용할 수 있다. importrange함수를 여러번 사용하는데, importrange함수를 {중괄호}로 묶어서 배열처리를 해주고, importrange 함수가 끝날때마다 세미콜론(;)을 붙여주는데, 맨 마지막 importrange함수에서는 제외를 시켜야한다.
인원현황5, 인원현황6에서 서울대/경기대 데이터만 호출한 결과는 다음과 같다.
막연한 생각으로는 시트를 배분하여 데이터를 취합할 때 강력한 기능을 할 것 생각이 된다.
이상 끝.