Power Query中'token eof expected'错误排查及小时产量计算
问题排查与修正方案
原代码错误分析
- 列名引用错误:代码中多次出现的
Valeur列不存在,原数据的产量列名为Production,这会导致语法解析失败,触发token eof expected错误。 - 硬编码索引不可靠:你用
t[Production]{4}和t[Production]{1}硬编码索引,但每个机器分组只有2条数据(00:00、01:00),索引应为{1}和{0};且如果后续数据行数变化,硬编码索引会直接失效。 each上下文逻辑错误:在Table.AddColumn的each表达式中,直接引用分组表t的索引值不符合Power Query的行上下文规则,应该先对分组内的表按Hour排序,再计算时段差值。
修正后的Power Query代码
// 假设你的前置步骤名称为"源",请根据实际情况替换 #"Grouped Rows" = Table.Group(源, {"Machine"}, { {"Difference", (t) => let // 按Hour排序,确保时段顺序正确 Sorted = Table.Sort(t,{{"Hour", Order.Ascending}}), // 添加差值列:当前时段Production减去上一时段 AddDiff = Table.AddColumn(Sorted, "Hourly Production", each if [Hour] = "00:00" then null // 00:00没有前一时段,差值为null else [Production] - Sorted[Production]{List.PositionOf(Sorted[Hour], [Hour])-1}, Decimal.Type) in AddDiff } }), #"Expanded Difference" = Table.ExpandTableColumn(#"Grouped Rows", "Difference", {"Hour", "Production", "Hourly Production"}) in #"Expanded Difference"
代码说明
- 先对每个机器分组内的数据按
Hour升序排序,保证时段顺序正确; - 针对
00:00时段直接返回null(无前置时段),其他时段用当前行Production减去上一行的Production; - 展开列时保留原始的
Hour、Production和新增的Hourly Production(小时产量)列,方便核对数据。
内容的提问来源于stack exchange,提问作者Marius D
相关产品推荐
相关产品推荐

