2017-05-13 3 views
0

나는이 형식으로 주소 목록을 가지고 : 배달 주소가 방문 주소와 다른 경우Power Query에서 인접한 두 행의 값을 결합하려면 어떻게합니까?

|ID|AddrType|Company|FName |LName |Address 
| 1|Visiting|ACME |Willie|Coyote|Sand Rd 10 
| 1|Delivery|ACME |Road |Runner|Sand Rd 20 
| 2|Visiting|Go Nuts|Chip |Munk |Tree Rd 3 
| 3|Visiting|In Sane|Dale |Munk |Tree Rd 5 

배달 형 주소 행에만 존재합니다. 그래서 주소의 수는

나는이 같은 결과를 얻을하려는 각 회사 ID 다를 수 있습니다

|ID|V_Company|V_FName|V_LName|V_Address |D_Company|D_FName|D_LName|D_Address 
| 1|ACME  |Willie |Coyote |Sand Rd 10|ACME  |Road |Runner |Sand Rd 20 
| 2|Go Nuts |Chip |Munk |Tree Rd 3 |Go Nuts |Chip |Munk |Tree Rd 3 
| 3|In Sane |Dale |Munk |Tree Rd 5 |In Sane |Dale |Munk |Tree Rd 5 

내가 시도를하고이 링크에 설명 된 것처럼 바꾸어 사용 실패 : https://community.powerbi.com/t5/Desktop/Merge-2-rows-in-one-row/m-p/46361#M18144

아래 행의 AddrType 값이 Delivery 인 경우 아래 행에서 값을 가져 오는 사용자 지정 열을 만들지 못했습니다. http://excel-inside.pro/blog/2015/11/05/absolute-and-relative-references-in-power-query/

내가 원하는 것을 얻을 수있는 쉬운 방법이 확신 :

= Table.AddColumn(#"Sorted columns", "D_FName", each if [AddrTyp]="Delivery" then [FName]{[Index]+1} else FName) 

내가 제한된 성공 visdom의 BU의 소스로이 링크를 사용했다. 나는 지금 당신의 경험과 지식을 이용하여 그것을 해결할 수 있습니다.

도와주세요!

답변

1

두 번째 주소가있는 테이블을 만듭니다. AdressType에 정렬 주소 목록 (오름차순, 배달이 먼저옵니다), 중복 된 항목을 버퍼링하고 제거합니다. 코드의

나머지는 명백해야한다 :

쿼리 "SecondAdresses"

let 
    Source = AddressList, 
    Sorted = Table.Buffer(Table.Sort(Source,{{"AddrType", Order.Ascending}})), 
    SelectDistinct = Table.Distinct(Sorted, {"ID"}), 
    D_Headers = Table.TransformColumnNames(SelectDistinct, each "D_"&_) 
in 
    D_Headers 

쿼리 "결과"

let 
    Source = AddressList, 
    SelectVisiting = Table.SelectRows(Source, each ([AddrType] = "Visiting")), 
    RemovedAddressType = Table.RemoveColumns(SelectVisiting,{"AddrType"}), 
    V_Headers = Table.TransformColumnNames(RemovedAddressType, each "V_"&_), 
    Merged = Table.NestedJoin(V_Headers,{"V_ID"},SecondAddresses,{"D_ID"},"NewColumn",JoinKind.LeftOuter), 
    Expanded = Table.ExpandTableColumn(Merged, "NewColumn", {"D_Company", "D_FName", "D_LName", "D_Address"}, {"D_Company", "D_FName", "D_LName", "D_Address"}), 
    RenamedID = Table.RenameColumns(Expanded,{{"V_ID", "ID"}}) 
in 
    RenamedID 
+0

고맙습니다 눈을 뜨게합니다! – MrDark