[파워쿼리기능소개] 7. 매개변수와 사용자 함수

2020. 7. 28. 22:26엑셀/파워쿼리기능소개

728x90
반응형

드디어 파워쿼리기능 소개의 마지막 포스팅입니다. 마지막으로 소개할 기능은 매개변수와 사용자함수 사용에 대한 것입니다. 이부분은 저도 아주 제한적으로 활용을 하고 있고 설명이 어려워서 처음 계획 할때는 다루지 않으려고 했으나 아주 조금만 이해하고 따라만 해도 유용한 기능이기에 추가하였습니다. 

1. 매개변수 란 ? 

위키백과에서 찾아보면 아래와 같은 말로 설명되어 있는데 어렵네요. 정리 포기.. 

매개변수 (컴퓨터 프로그래밍)
컴퓨터 프로그래밍에서 매개변수(영어: parameter 파라미터[*])란 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴[1]의 인풋으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용된다. 여기서 서브루틴의 인풋으로 제공되는 여러 데이터들을 전달인자(argument) 라고 부른다. 보통 매개변수의 목록은 서브루틴의 정의 부분에 포함되며, 매번 서브루틴이 호출될 때 마다 해당 호출에서 사용된 전달인자들을 각각에 해당하는 매개변수에 대입시켜 준다.
 

컴퓨터 프로그래밍 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍(영어: computer programming) 또는 간단히 프로그래밍(programming, 문화어: 프로그램 작성) 혹은 코딩(coding)은 하나 이상의 관련된 추상 알고리즘을 ��

ko.wikipedia.org

저는 그냥 "파워쿼리에서 함수에 들어가는 인수를 변수로 사용할 수 있도록 변수를 선언하는 기능." 으로 이해하고 있습니다. 

원본 데이터의 매입금액에 할인률이라는 매개변수를 만들어서 할인금액을 만들어보겠습니다. 사용자 지정열로 다음과 같이 식을 넣습니다. 

할인율을 10%로 합니다. 식을 입력하고 확인을 누르면 할인 금액이 추가됩니다. 

그런데 할인율을 10%에서 변경하고 싶다면 어떻게 해야 할까요? 식을 고치면 됩니다. 그런데 식을 안고치고 동적으로 넣고 싶습니다. 어디에 입력하면 딱 반영되도록이요. 이럴 때 매개변수를 만들어서 사용합니다. 

저는 이렇게 이해하고 공부하고 있습니다. 

 

2. 파워쿼리 편집기에서 매개변수 사용법 

할인율이라는 매개변수를 만듭니다. 홈>매개변수 관리 를 클릭하여 관리창에서 새로만들기로 새 매개변수를 만듭니다. 

데이터 유형을 숫자로 제안 값은 모든 값으로 그리고 현재 값은 0.1 로 등록하고 확인을 누르면 생성완료입니다. 

할인율 매개변수가 생성 완료

사용자지정열 단계의 설정을 눌러 식을 다음과 같이 수정합니다. 

그리고 할인율 매개변수의 값을 변경합니다. 0.2로 변경하겠습니다. 

할인금액이 20%로 반영되어 수정되었습니다. 

매개변수를 입력하는 방법에는 값을 입력할 수도 있고 목록을 작성해서 선택할 수도 있습니다. 쿼리로 목록(list)을 작성하여 지정할 수도 있다고 합니다. 사용해보지 않아서 잘 모르겠네요. 

매개변수와 함수 부분은 제가 공부를 더 진행하면서 많이 다루게 될 부분이라 생각되어 추후 응용편으로 포스팅 할때 부족한 부분을 채워보도록 할 계획입니다. 

 

3. 빈쿼리로 나만의 함수 만들기  

파워쿼리는 함수를 직접 만들어서 사용할 수 있습니다. 그렇다고 없는 함수(M코드)를 만들어내는 것은 아니고 이미 존재하는 M코드를 직접 스크립트 형태로 만들어서 사용할 수 있는 수준이라고 이해하는 것이 좋을 것 같습니다. 

계속 동일한 예제로 기능 소개를 이어 가겠습니다.

이번에는 매개변수를 사용하지 않고 엑셀 시트에서 값을 받아오는 함수를 만들어서 할인금액을 계산되도록 하는 것으로 함수 만들기 예시를 들겠습니다. 

먼저 엑셀시트에 표를 하나 만들겠습니다. 표 이름은 "f할인율"로 생성했습니다. 

그리고 "데이터 가져오기>기타원본에서>빈쿼리"를 클릭하여 쿼리를 생성합니다. 

쿼리 이름은 "fDiscount" 로 하고 "홈>쿼리>고급 편집기"를 클릭하여 고급편집기 창에서 아래와 같이 식을 입력합니다. 

let  fdiscount = (tablename) => 

let 
  Source = Excel.CurrentWorkbook(){[Name =tablename]}[Content],
  Value =  Source{0}[discount rate] 
  in  Value

in fdiscount

"fdiscount" 라는 함수를 정의한것입니다. 'tablename' 이란 변수에 가져올 테이블이름을 입력하면 discount rate 필드의 맨 처음 행 값을 반환하는 내용입니다. 여기서는 현재 엑셀에 입력된 값이 20% 이므로 0.2 를 반환합니다. 

이제 이 함수를 "f매입실적" 쿼리에 이 함수를 적용해 보겠습니다. 

사용자지정열 추가의 설정을 클릭해서 함수식을 수정합니다.

위에서 매개변수 'f할인율'로 입력되어 있는 부분에 함수를 호출하는 식으로 수정합니다. 그리고 엑셀에 로드 해보면 20% 할인율로 계산이 됨을 확인 할 수 있습니다. 

이 상태에서 discount rate 의 값을 변경하고 모두새로고침(Ctrl+Alt+F5)를 하면 데이터가 갱신되면서 변경된 할인율로 계산이 수행됩니다. 

예제 파일 첨부합니다. 

함수_매입실적.xlsx
0.03MB

4. 활용 

간략하게 제가 사용한 경험이 있는 Case로 매개변수와 사용자함수 예제로 소개를 드렸습니다. 

▶ 어디에 사용하면 좋을 까요? 

  • 파워쿼리로 가져올 원본을 파워쿼리 수정 없이 엑셀에 입력된 값으로 동적 처리를 만들고 싶을때
    - 파일위치, url, Database의 데이터를 가져올 때 SQL의 변수 등등 
  • 엑셀 시트에서 변수를 조정해가며 시뮬레이션을 하고 싶을때 
  • 데이터 전처리 사용의 자동화 모듈을 만들고 싶을때
    - 코드를 변수로 디스크립션 리턴 등 

이 정도 생각이 되네요. 개인적인 바램은 이렇게 만든 함수를 익스포트해서 여러 엑셀파일에서 돌려서 쓸 수 있으면 좋을텐데요. 당장 쓸일이 없기는 하지만 그래도 조금 아쉽습니다. 

함수 사용은 프로그램 언어의 지식이 있는 분들은 금방 터득하실것 같네요. 저는 그렇지 못해서 많이 어렵습니다만... 

 

 

파워쿼리기능소개 시리즈 포스팅을 마치며... 

드디어 목표했던 파워쿼리기능소개 시리즈를 마칩니다. 거의 한달이 걸린것 같네요. 요즘 하는 작업들이 주로 파워쿼리를 많이 쓰게 되어서 피워피벗 보다 파워쿼리를 먼저 포스팅 했는데요. 앞으로도 조금 두서 없이 제 업무와 가까운 주제부터 Case별로 포스팅하는 것에 무게를 둘 생각입니다.

많이 부족하지만 포스팅 하는 것 자체가 제 공부에 도움이 많이 되고 있어서 즐겁네요. 이 목적만 달성해도 뿌듯합니다. 그냥 검색해서 읽어보고 넘길 것들도 글로 정리하려니 고민되고 또 더 찾아보고 하는 과정이 귀찮지만 고생한 흔적들이 남아 더 큰 무엇인가를 이룰 수 있을 거라 믿으며..... 마칩니다. 

 

728x90
반응형