电力查询 – 如何在特定列内移动行

我需要将特定的列向下移动4行,这是否可以做电源查询? 如果可能的话,我怎么能做到这一点? 引用赞赏。

道歉,第二个想法,它可以实现使用菜单选项。 在这个版本中,testing表的所有列名都是硬编码的。

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" 

我不认为这可以通过在查询编辑器中使用菜单选项来实现,但可以在高级编辑器中进行编码来完成。

如果要向下移动的列名称为“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