sorting后的数据的Power query pivot列错误在未sorting时起作用

当我对未sorting的数据做一个数据透视列时,它工作正常,但是,当我在一个sorting的数据(相同的数据)时,我收到以下错误。

知道如何解决问题真的很有帮助。 数据是完整的,没有差距是有错误的。

在这里输入图像说明

我的代码是:

#"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) 

我使用的查询2.27.4163.242办公室2013年家庭和办公室

如果我删除sorting的行,它是工作正常,没有错误。

以下是查询的完整代码:

 **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"** 

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

你可以像下面这样dynamic创buildpivoted列的sort-order-argument:

 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(_)), "-"), "-") 

您可能需要将上面的字段名称调整为在数据透视表中保留的字段名称。 这一步需要在已sorting的列中将其转换为文本,然后再将其拆分为单个单词。 然后将它们与主数据库中剩余的字段名称合并,然后重新排列成列表格式(您需要将其传递给Table.ReorderColumns命令)

然后,您将引用步骤“Pivoted Column”来代替步骤#“更改types1”:

 #"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) 

作为最后一步进行sorting:

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

如果您将表格填写到Excel中,是否会收到有错误的行? 出于性能原因,Power Query将只在Query Editor预览中对有限数量的行执行计算。 sorting可能会把问题更接近表格顶部,这可以解释为什么你只能看到在这种情况下的错误。

创build一个新的Excel文件,并按照上述相同的步骤,它的工作。 可能只是一些错误。