2017-11-09 2 views

답변

1

사과는 두 번째 생각에 메뉴 옵션을 사용하여 달성 할 수 있습니다. 이 버전에서는 테스트 테이블의 모든 열 이름이 하드 코딩되어 있습니다.

let 
    #"QUERY SUMMARY" = 
     "In this query, column ""ColToMove"" is shifted down 4 positions.#(lf)" & 
     "The code is mainly generated via the menu options in the Query Editor.#(lf)" & 
     "Index columns are added, starting with 0 and with 4.#(lf)" & 
     "Merging the table with itself on the different Index columns, cause the merged version to be shifted down 4 positions.#(lf)" & 
     "The original sort is restored, columns are removed and reordered.", 
    Source = Table1, 
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1), 
    #"Added Index1" = Table.AddIndexColumn(#"Added Index", "Index.1", 4, 1), 
    #"Merged Queries" = Table.NestedJoin(#"Added Index1",{"Index"},#"Added Index1",{"Index.1"},"Added Index1",JoinKind.FullOuter), 
    #"Removed Columns" = Table.RemoveColumns(#"Merged Queries",{"ColToMove"}), 
    #"Expanded Added Index1" = Table.ExpandTableColumn(#"Removed Columns", "Added Index1", {"ColToMove", "Index.1"}, {"ColToMove", "Index.1.1"}), 
    #"Sorted Rows" = Table.Sort(#"Expanded Added Index1",{{"Index.1.1", Order.Ascending}, {"Index.1", Order.Ascending}}), 
    #"Removed Columns1" = Table.RemoveColumns(#"Sorted Rows",{"Index", "Index.1", "Index.1.1"}), 
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns1",{"ID", "ColToMove", "Col3", "Col4", "Col5", "Col6", "Col7", "Col8", "Col9", "Col10"}) 
in 
    #"Reordered Columns" 
1

쿼리 편집기에서 메뉴 옵션을 사용하여 달성 할 수 있다고 생각하지 않지만 고급 편집기에서 코딩을 사용하여 수행 할 수 있습니다.

아래로 이동하려는 열의 이름이 "ColToMove"인 경우 아래 코드를 사용할 수 있습니다. 다른 열은 결과의 마지막 4 행에 널을 가져옵니다.

let 
    #"**** QUERY SUMMARY ****" = 
     "This query moves column ""ColToMove"" 4 rows down, by:#(lf)" & 
     "1. Saving the original column sequence and table type.#(lf)" & 
     "2. Drilling down into ""ColToMove"".#(lf)" & 
     "3. Adding 4 nulls at the start of the resulting list.#(lf)" & 
     "4. Removing the ""ColToMove"" from the original table." & 
     "5. Transforming the resulting table in a list of list.#(lf)" & 
     "6. Adding the list from step 3.#(lf)" & 
     "7. Transforming the result into a table, with the moved column as last column.#(lf)" & 
     "8. Reordering the columns to the original sequence.#(lf)" & 
     "9. Restoring the original table type.", 

    Source = Table1, 
    OriginalColumnSequence = Table.ColumnNames(Source), 
    OriginalTableType = Value.Type(Source), 

    ColToMove = Source[ColToMove], 
    MovedCol = List.Repeat({null},4)&ColToMove, 

    RemovedColToMov = Table.RemoveColumns(Source,{"ColToMove"}), 
    TableToColumns = Table.ToColumns(RemovedColToMov), 
    AddedMovedCol = TableToColumns&{MovedCol}, 

    ColumnNames = Table.ColumnNames(RemovedColToMov)&{"ColToMove"}, 
    TableFromColumns = Table.FromColumns(AddedMovedCol,ColumnNames), 

    ReorderedColumns = Table.ReorderColumns(TableFromColumns,OriginalColumnSequence), 
    RestoredOriginalTableType = Value.ReplaceType(ReorderedColumns,OriginalTableType) 
in 
    RestoredOriginalTableType 
관련 문제