在 Power Query 中按列表分组时出错

Errors when grouping by list in Power Query

我有一组独特的项目(索引),每个项目都与另一组项目(在本例中为日期)的各种元素相关联。 在现实生活中,如果日期与索引相关联,则与该索引相关联的项目会出现在该日期生成的文件中。对于实际发生的日期组合,我想知道存在哪些帐户。

let
Source = Table.FromRecords({
    [Idx = 0, Dates = {#date(2016,1,1), #date(2016,1,2), #date(2016,1,3)}],
    [Idx = 1, Dates = {#date(2016,2,1), #date(2016,2,2), #date(2016,2,3)}],
    [Idx = 2, Dates = {#date(2016,1,1), #date(2016,1,2), #date(2016,1,3)}]}, 
    type table [Idx = number, Dates = {date}]),

// Group by 
Grouped = Table.Group(Source, {"Dates"}, {{"Idx", each List.Combine({[Idx]}), type {number}}}),

// Clicking on the item in the top left corner generates this code:
Navigation = Grouped{[Dates={...}]}[Dates],
// Which returns this error: "Expression.Error: Value was not specified"

// My own code to reference the same value returns {0,2} as expected.
CorrectValue = Grouped{0}[Idx],

// If I re-make the table as below the above error does not occur.
ReMakeTable = Table.FromColumns(Table.ToColumns(Grouped), Table.ColumnNames(Grouped))

in ReMakeTable

似乎我可以在我以后的工作中使用这个结果,即使没有重新制作(我只是无法正确预览单元格),但我想知道是什么原因导致了导航步骤中的错误和奇怪的代码,以及为什么它在 ReMakeTable 步骤后消失。

这是 UI 中的错误。 UI 计算的索引不正确:它应该是 0 而不是 [Dates={...}]... 是一个占位符值,如果不替换它会产生 "Value was not specified" 异常。

发生这种情况是因为当您双击某个项目时,自动生成的代码使用 值过滤器 而不是 行索引 用于从 table 获取单行。因为你有一个列表作为值,所以应该使用它而不是 {...}。可能 UI 在这种情况下无法使用列表,它会插入 {...},这确实是一个不正确的值。

因此,这行代码应该如下所示:

    Navigate = Grouped{[Dates = {#date(2016,1,1), #date(2016,1,2), #date(2016,1,3)}]}[Idx],

然后它将使用值过滤器。