2017-12-15 12 views
0

나는 다음과 같은 엑셀 테이블이 있습니다네트워크 흐름 데이터베이스

Sample Table in Excel

열 A, B와 D는 (데이터) 제공됩니다. 다른 열이 계산됩니다. 각 열의 수식이 아래에 나와 있습니다.

Formula in each column of Excel Table

을 감안할 때 열 A, B와 D, 전원 쿼리로 생성이 테이블을 만들 수 있습니까?

+0

이것은 원형 정의와 같습니다. 열 F는 열 F를 참조하는 열 C의 관점에서 정의됩니다. –

답변

0

루핑 메커니즘 중 하나 인 List.Generate, List.Accumulate 또는 Recursive 기능을 사용하여 수행 할 수 있습니다.

반복 횟수가 알려져 있으므로 List.Accumulate를 선호합니다.

아래 쿼리에서 List.Accumulate는 원본에 추가해야하는 필드가있는 레코드 목록을 작성합니다.

결과 테이블은 열 값 목록과 새 테이블 유형을 통해 생성됩니다.

let 
    Source = Table1, 
    IncomingSupplies = List.Buffer(Source[Incoming Supply]), 
    GenerateFlow = 
     List.Accumulate(
      List.Skip(IncomingSupplies), 
      {[Beginning On Hand Inventory = Source[Starting Inventory]{0}, 
       Shipments = 0.5 * #"Beginning On Hand Inventory", 
       Ending On Hand = #"Beginning On Hand Inventory" + IncomingSupplies{0} - Shipments]}, 
      (Result,Supply) => 
       Result & 
       {[Beginning On Hand Inventory = List.Last(Result)[Ending On Hand], 
        Shipments = 0.5 * #"Beginning On Hand Inventory", 
        Ending On Hand = #"Beginning On Hand Inventory" + Supply - Shipments]}), 
    NewTableType = Value.Type(Table.AddColumn(Source,"Records",each [], type[])), 
    CombineSourceAndFlow = Table.FromColumns(Table.ToColumns(Source)&{GenerateFlow},NewTableType), 
    ExpandFlow = Table.ExpandRecordColumn(CombineSourceAndFlow, "Records", {"Beginning On Hand Inventory", "Shipments", "Ending On Hand"}), 
    Typed = Table.TransformColumnTypes(ExpandFlow,{{"Beginning On Hand Inventory", Int64.Type}, {"Shipments", Int64.Type}, {"Ending On Hand", Int64.Type}}), 
    Reordered = Table.ReorderColumns(Typed,{"Month", "Starting Inventory", "Beginning On Hand Inventory", "Incoming Supply", "Shipments", "Ending On Hand"}) 
in 
    Reordered 
+0

솔루션을 제공해 주셔서 감사합니다. 위대한 작품! 이 비늘이 있는지 확인하십시오. – mnoPQ