未排序时,已排序数据的 Power query 数据透视列错误有效

Power query pivot column error on sorted data works when not sorted

当我对未排序的数据执行数据透视列时,它工作正常,但是,当我对排序的数据(相同数据)执行时,我收到以下错误。

了解如何解决问题会很有帮助。数据完整,没有错误。

我的代码是:

 #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"start_date", type date}, {"Surface Date", type date}}),
 #"Sorted Rows" = Table.Sort(#"Changed Type1",{{"Surface Date", Order.Ascending}}),
 #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Sorted Rows", {{"Surface Date", type text}}, "en-US"),
List.Distinct(Table.TransformColumnTypes(#"Sorted Rows", {{"Surface
Date", type text}}, "en-US")[#"Surface Date"]), "Surface Date",
"Answer Count", List.Sum)

我正在使用 office 2013 Home and office 查询 2.27.4163.242

如果我删除排序的行步骤,它工作正常,没有错误。

下面是查询的完整代码:

**let
    /* Get parameters for filtering*/
        Source = Excel.CurrentWorkbook(){[Name="Acitivity"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Surface Date", type date}, {"user_type", type text}, {"user_id", Int64.Type}, {"Subject", type text}, {"Total Surfaces", Int64.Type}, {"Answer Count", Int64.Type}, {"Surf", Int64.Type}, {"PrimaryBoard", type logical}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type",{"user_id"},EAsList,{"user_id"},"NewColumn",JoinKind.Inner),
    #"Reordered Columns" = Table.ReorderColumns(#"Merged Queries",{"Surface Date", "user_type", "user_id", "NewColumn", "Subject", "Total Surfaces", "Answer Count", "Surf", "PrimaryBoard"}),
    #"Expanded NewColumn" = Table.ExpandTableColumn(#"Reordered Columns", "NewColumn", {"start_date", "Name", "Email", "RevokeDate"}, {"start_date", "Name", "Email", "RevokeDate"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded NewColumn",{"Subject", "Total Surfaces", "Surf", "PrimaryBoard"}),
    #"Appended Query" = Table.Combine({#"Removed Columns",NewEAsForAppending}),
    #"Removed Columns1" = Table.RemoveColumns(#"Appended Query",{"Subject"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Columns1",0,null,Replacer.ReplaceValue,{"Answer Count"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Replaced Value",{{"start_date", type date}, {"Surface Date", type date}}),
    #"Sorted Rows" = Table.Sort(#"Changed Type1",{{"Surface Date", Order.Ascending}}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Sorted Rows", {{"Surface Date", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Sorted Rows", {{"Surface Date", type text}}, "en-US")[#"Surface Date"]), "Surface Date", "Answer Count", List.Sum)
in
    #"Pivoted Column"**

用虚拟数据复制文件很困难,因此无法上传文件。

您可以像这样为旋转列动态创建排序顺序参数:

NewOrder= Text.Split (Text.Combine ({"user_type", "user_id", "NewColumn", "Subject", "Total Surfaces", "Answer Count", "Surf", "PrimaryBoard"}, "-") &"-"& Text.Combine(List.Transform(#"Sorted Rows"[Surface Date], each Text.From(_)), "-"), "-")

您可能需要将上面的字段名称调整为实际保留在数据透视表中的字段名称。此步骤采用排序列,将其转换为文本,然后将其拆分为单个单词。然后将它们与数据透视中的剩余字段名称组合,然后重新排列为列表格式(您需要传递给 Table.ReorderColumns 命令)

然后您将参考步骤 "Pivoted Column" 改为步骤 #"Changed Type1":

#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Changed Type1", {{"Surface Date", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Changed Type1", {{"Surface Date", type text}}, "en-US")[#"Surface Date"]), "Surface Date", "Answer Count", List.Sum)

并在最后一步执行排序:

= Table.ReorderColumns(#"Pivoted Column", NewOrder)

如果您将 table 填充到 Excel,您会得到任何有错误的行吗?出于性能原因,Power Query 将仅对查询编辑器预览中的有限行数执行计算。这种排序可能会使问题更接近 table 的顶部,这可以解释为什么在这种情况下您只看到错误。

创建了一个新的 excel 文件并按照与上述相同的步骤进行操作,它成功了。可能只是一些错误。