파워쿼리를 사용하다보면 파워쿼리 편집기에서 필터목록을 일일이 지정하는 것이 번거로울 때가 있습니다. 특정 날짜의 데이터만 추출하고 싶을 때 매번 파워쿼리 편집기에서 날짜를 지정하는 경우가 대표적인 사례인데요.
이런 경우 필터링을 위한 테이블을 따로 엑셀 시트에 만들면 더욱 간편하게 원하는 조건의 데이터를 추출할 수 있습니다.
▼예시파일
https://www.data.go.kr/data/15088648/fileData.do
#1. 예시파일 보기
▲ 예시파일에는 거래일이 2015-11-05 ~ 2021-06-03 기간 동안의 데이터가 있습니다. 이번 글에서는 거래일을 기준으로 필터링을 해보겠습니다.
#2. 필터링 전용 테이블 만들기
▲ 엑셀 시트에 필터링 전용 테이블을 만든 후, 추출하고 싶은 거래일 날짜를 기입합니다.
이후 연결전용으로 파워쿼리 테이블을 만들어 줍니다(테이블명 tbl_filter로 설정함).
▲ 여기서 중요한 점은, 필터링 전용 테이블의 거래일 데이터 타입이 예시파일의 거래일 데이터 타입과 동일해야 한다는 것입니다(type date).
#3. 데이터 필터링을 위해 파워쿼리 구문 수정하기 (List.Contains 함수)
▲ 코딩의 편리함을 위해 우선 거래일에서 아무 날짜 하나를 필터링 조건으로 지정해줍니다.
▲ 이후 수식입력줄에서 아래처럼 코드를 수정해줍니다. 그러면 필터링 테이블 조건대로 데이터가 추출됩니다.
= Table.SelectRows(#"변경된 유형", each (List.Contains(tbl_filter[거래일],[거래일])=true))
< Table.SelectRows(#"변경된 유형", each (List.Contains(tbl_filter[거래일],[거래일])=true)) 구문 해석>
- 위의 구문은 List.Contains(tbl_filter[거래일],[거래일])=true인 데이터만 추출하라는 의미입니다.
- List.Contains(리스트, 찾는 값) 함수는 주어진 리스트에 특정 값이 포함되어 있는지 여부를 확인하는 함수입니다.
List.Contains(리스트, 찾는 값)이 true 면 찾는 값이 리스트 안에 있는 것이며, false 면 찾는 값이 리스트 안에 없는 것입니다. - tbl_filter은 필터 전용 테이블의 쿼리명입니다. tbl_filter[거래일]은 tbl_filter의 '거래일' 열 데이터를 의미합니다
테이블명[열이름] 방식으로 다른 테이블의 열 데이터를 리스트로 참조할 수 있습니다. - tbl_filter[거래일] 다음에 나오는 [거래일]은 현재 쿼리, 즉 예제 파일의 거래일 열 데이터를 뜻합니다.
'엑셀, VBA, 파워쿼리 > 파워쿼리' 카테고리의 다른 글
[파워쿼리] 목록(List)를 활용하여 동적으로 필요한 열만 추출하기 (Table.SelectColumns) (0) | 2024.05.23 |
---|---|
[파워쿼리] if 조건문 활용하기 (2) | 2024.04.21 |
[파워쿼리] 쿼리 병합 및 '집계'로 데이터 항목별 합계, 평균, 최대값 등의 데이터를 끌고오기 (0) | 2023.11.05 |
[파워쿼리] 데이터 행이 너무 많아 로드가 안될 때 해결방법: 연결만 만들기, 피벗테이블로 만들기 (2) | 2023.10.24 |
[파워쿼리] 파워쿼리의 필터 기능(기본 사용법, And/Or 조건 추가) (5) | 2023.10.18 |
댓글