[파워쿼리] 목록(List)를 활용하여 동적으로 필요한 열만 추출하기 (Table.SelectColumns)
엑셀, VBA, 파워쿼리/파워쿼리

[파워쿼리] 목록(List)를 활용하여 동적으로 필요한 열만 추출하기 (Table.SelectColumns)

by Jongg 2024. 5. 23.
728x90

 

파워쿼리에서 특정 열만 선택하거나 제거할 때, 열들을 마우스로 일일이 선택한다면 아래와 같은 문제점이 발생합니다.

① 열이 많을 경우 마우스로 선택하는 행위 자체가 번거롭습니다.

② 선택할 열을 바꾸고 싶은 경우 다시 마우스로 일일이 선택해줘야 합니다. 

 

하지만, 목록(List)를 활용하면 원하는 열을 동적으로 설정할 수 있습니다. 목록을 활용하는 방법은 보존할 열을 선택하는 것뿐만 아니라, 피벗열을 해제 혹은 설정할 때, 필터를 걸 때도 활용할 수 있습니다. 

 

예시파일.xlsx
0.02MB

 

#1. 예시파일 상황

▲ test1~test13 열이 있는 표 '원본'과,  '원본' 표에서 추출하고 싶은 열만 기입하는 표 'Col'이 있습니다. 

 

▲ 그리고 두 개의 표를 모두 '테이블에서 가져오기'를 통해 쿼리를 생성해 놓은 상태입니다. Col 경우 연결 전용으로 생성해 두었습니다.

 

#2. 목록을 활용하여 Table.SelectColumns 함수 구문 편집하기

▲ 우선 아무 열을 선택하여 우클릭 > 다른 열 제거를 클릭합니다. 저는 test1과 test2열을 선택하였습니다.

 

▲ 클릭 결과 위의 사진처럼 test1, test2 열만 남게 되었고, 수식 입력줄에는 아래의 구문이 생성되었습니다.   

= Table.SelectColumns(원본, {"test1", "test2"})

 

이 구문을 분석해보자면, 

원본은 바로 직전 '원본' 단계의 데이터 표(Table)을 의미하며, 

{"test1", "test2"}는 "test1", "test2"로 구성된 목록을 의미합니다. 

 

선택한 열들이 목록의 형태로 Table.SelectColumns 구문에 들어간다는 점을 활용하는 것입니다. 

 

▲ 위의 사진처럼 수식 입력줄 구문을 = Table.SelectColumns(원본, Col[Col])로 수정하면 test1, test2, test3 열이 남게 됩니다. 

 

이 구문을 분석하자면, Col[Col]에서 'Col'은 'Col' 쿼리 자체를 의미합니다. 

[Col]은 'Col'이라는 이름의 열의 데이터 목록을 의미합니다. 

따라서,  Col[Col]'Col' 쿼리의 'Col'이라는 이름의 열의 데이터 목록을 의미합니다. 

 

즉, "쿼리명[열이름]"은 해당 쿼리의 해당 열 데이터를 목록 형태로 출력합니다.  

 

728x90

 

#3. 쿼리 로드 및 작동 테스트

 

▲  편의상 같은 시트에 쿼리를 로드하겠습니다.

 

▲  로드 결과, 'Col' 표에 입력한 열들이 로드됩니다.

 

▲  Col 열의 내용이 변경되면, 로드 결과도 자동적으로 반영됩니다.

728x90

댓글