20230519 2229 

 

REF

[1] https://excelguru.ca/power-query-errors-please-rebuild-this-data-combination/

 

practice file

20230519 2327.xlsx
0.03MB

 

개요

과일 목록과 세일즈 목록을 병합하고, 칼럼을 추가해서 오늘 날짜를 넣는데 그 값이 엑셀에 연동되도록 해보자.

 

(문제) 두 테이블을 병합한 뒤 사용자 정의함수 쿼리를 만들어서 추가하면 아래와 같은 오류가 뜬다.

 

Formula.Firewall: 쿼리 'zMerge' (단계 '호출된 사용자 지정 함수')에서는 다른 쿼리 또는 단계를 참조하므로 데이터 원본에 직접 액세스할 수 없습니다. 이 데이터 조합을 다시 만드세요

 

 

code ; t_sales_q

let
    원본 = Excel.CurrentWorkbook(){[Name="t_sales"]}[Content],
    #"변경된 유형" = Table.TransformColumnTypes(원본,{{"date", type date}, {"item", type text}, {"quantity", Int64.Type}}),
    #"병합된 쿼리" = Table.NestedJoin(#"변경된 유형", {"item"}, t_fruit_q, {"item"}, "t_fruit_q", JoinKind.LeftOuter),
    #"확장된 t_fruit_q" = Table.ExpandTableColumn(#"병합된 쿼리", "t_fruit_q", {"price"}, {"t_fruit_q.price"}),
    #"호출된 사용자 지정 함수" = Table.AddColumn(#"확장된 t_fruit_q", "zToday", each zGetDate("t_day"))
in
    #"호출된 사용자 지정 함수"

(원인)

you cannot combine an external data source with another query. [1]

It tries to merge that(= a query) to an external data source which is called in the first line.[1]

 

우리의 경우, 외부데이터(zGetData)**와 t_fruit_q 쿼리를 함께 사용할 수 없다.

** 엑셀에 있는 값을 가져오려고 하고 있다. 이것은 웹이나 db에서 값을 가져오는 것과 같은 개념이고 따라서 외부데이터 이다.

 

(해결)

병합 코드와 사용자지정함수 코드를 분리해서 별도의 쿼리로 만든다음 합친다.

(뇌피셜) 사용자 정의함수를 wrapping해서 내부쿼리로 만든 뒤 합친다. 그러면 외부데이터가 없으니까 OK.

단, 합칠 때 사용자지정함수가 먼저 와야 한다. 그렇지 않으면 오류 발생(이유는 뭘까?)

 

code; t_sales_q_temp

let
    source = Excel.CurrentWorkbook(){[Name="t_sales"]}[Content],
    step01 = Table.AddColumn(source, "zToday", each zGetDate("t_day"))
in
    step01

code; t_sales_q

let
    source = t_sales_q_temp,
    #"변경된 유형" = Table.TransformColumnTypes(source,{{"date", type date}, {"item", type text}, {"quantity", Int64.Type}}),
    #"병합된 쿼리" = Table.NestedJoin(#"변경된 유형", {"item"}, t_fruit_q, {"item"}, "t_fruit_q", JoinKind.LeftOuter),
    step02 = Table.ExpandTableColumn(#"병합된 쿼리", "t_fruit_q", {"price"}, {"t_fruit_q.price"})
in
    step02

(결과물)

 

쿼리들의 연결관계를 보려면...

PQ > 보기 > 쿼리 종속성

 

Posted by Weneedu
,


출처: https://privatedevelopnote.tistory.com/81 [개인노트]