力量查询-旋转无间隙

时间:2018-12-15 17:54:18

标签: list pivot-table powerquery

对不起,我想不出更好,更合适的标题。文字应澄清...

在以下情况中:4名员工应在不同的日期工作。该表如下所示:

all regions excluding nz aus-airport-1, aus-airport-2, us-airport-1, us-airport-2
all regions in aus nz-airport-1
all ships aus-ship-1, us-ship-99

好的,在“,”处分割名称(带有空格)并粘贴为行;因为必须有3列:插入索引列,然后进行枢轴转换会导致以下结果:

Date        Name
12/13/2018  Carol, John
12/14/2021  Peter, Carol, John, Alice
12/15/2018  Alice
12/16/2018  Peter, Alice
12/17/2018  John, Peter

但是我想要的结果是

Index     12/13/2018 12/14/2018 12/15/2018 12/16/2018 12/17/2018
      0   Carol      null       null       null       null
      1   John       null       null       null       null
      2   null       Peter      null       null       null
      3   null       Carol      null       null       null
      4   null       John       null       null       null
      5   null       Alice      null       null       null
      6   null       null       Alice      null       null
      7   null       null       null       Peter      null
      8   null       null       null       Alice      null
      9   null       null       null       null       John
     10   null       null       null       null       Peter

稍后我将删除列索引。 所以我达到了预期的目标:除了列索引和(正确排列)列12/13/2018以外,将每个其他列创建为新查询并过滤/删除空单元格。然后删除上一个日期列,然后通过合并将新创建的日期列重新插入查询中。

在我看来,这非常繁琐且乏味。 Power Query中有更好的方法吗?

如果您能用简单的单词描述一种更好的方法,并且可能的话,请一步一步地(不仅是M代码),我会很高兴。

1 个答案:

答案 0 :(得分:1)

取表,用定界符(逗号,每次出现)分割,选择然后转置整个表,添加索引

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"List", type text}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "List", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"List.1", "List.2", "List.3", "List.4"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"List.1", type text}, {"List.2", type text}, {"List.3", type text}, {"List.4", type text}}),
#"Transposed Table" = Table.Transpose(#"Changed Type1"),
#"Added Index" = Table.AddIndexColumn(#"Transposed Table", "Index", 0, 1),
#"Reordered Columns" = Table.ReorderColumns(#"Added Index",{"Index", "Column1", "Column2", "Column3", "Column4", "Column5"})
in  #"Reordered Columns"