[파워쿼리] 데이터 필터링용 테이블로 추출조건 손쉽게 설정하기 (List.Contains 함수 활용)
엑셀, VBA, 파워쿼리/파워쿼리

[파워쿼리] 데이터 필터링용 테이블로 추출조건 손쉽게 설정하기 (List.Contains 함수 활용)

by Jongg 2024. 3. 1.
728x90

파워쿼리를 사용하다보면 파워쿼리 편집기에서 필터목록을 일일이 지정하는 것이 번거로울 때가 있습니다. 특정 날짜의 데이터만 추출하고 싶을 때 매번 파워쿼리 편집기에서 날짜를 지정하는 경우가 대표적인 사례인데요. 

이런 경우 필터링을 위한 테이블을 따로 엑셀 시트에 만들면 더욱 간편하게 원하는 조건의 데이터를 추출할 수 있습니다. 

 

▼예시파일
https://www.data.go.kr/data/15088648/fileData.do

 

한국주택금융공사_주택저당증권 시세정보_20210603

한국주택금융공사에서 발행하는 mbs의 증권표준코드정보, 종목명, 만기일, 평균수익률, 평균단가 등 주택저당증권 시세정보를 파악할 수 있는 주택저당증권 관련의 데이터들을 제공합니다.

www.data.go.kr

한국주택금융공사_주택저당증권 시세정보_20210603.csv
0.64MB

 

 

#1. 예시파일 보기

▲ 예시파일에는 거래일이 2015-11-05 ~ 2021-06-03 기간 동안의 데이터가 있습니다. 이번 글에서는 거래일을 기준으로 필터링을 해보겠습니다. 

 

#2. 필터링 전용 테이블 만들기

 

▲  엑셀 시트에 필터링 전용 테이블을 만든 후, 추출하고 싶은 거래일 날짜를 기입합니다.

이후 연결전용으로 파워쿼리 테이블을 만들어 줍니다(테이블명 tbl_filter로 설정함).

 

▲ 여기서 중요한 점은, 필터링 전용 테이블의 거래일 데이터 타입이 예시파일의 거래일 데이터 타입과 동일해야 한다는 것입니다(type date). 

 

728x90

 

#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[거래일] 다음에 나오는 [거래일]은 현재 쿼리, 즉 예제 파일의 거래일 열 데이터를 뜻합니다.
728x90

댓글