2016-11-11 120 views
1

我有一组独特的项目(Index),每个项目都与另一组项目(本例中为日期)的各个元素相关联。 在现实生活中,如果日期与索引相关联,则与该索引关联的项目会出现在该日期生成的文件中。对于实际发生的日期的组合,我想知道哪些帐户存在。在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步骤之后为什么会消失。

+0

在我看来,你按日期列表分组,并获得每个日期列表对应的项目列表,是吗? 如果是这样,我几乎不知道如何进一步使用它,因为它可能会生成很多唯一的日期列表,只有一个(也许是两个)相应的索引。 – Eugene

回答

1

这是因为,当你双击一个项目,自动生成的代码使用值滤波,而不是您正在使用获取从表中单列行索引。而且,由于您有一个列表作为值,因此应该使用它来代替{...}。可能UI在这种情况下无法处理列表,并且会插入{...},而这确实是一个不正确的值。

因此,这行代码应该是这样的:

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

然后,它会使用值过滤器。

1

这是UI中的一个错误。 UI计算的索引不正确:它应该是0而不是[Dates={...}]...是一个占位符值,如果它未被替换,它会生成“未指定值”异常。