Power Query:如何通过列位置添加星期几列
解决Power Query中用列位置代替列名添加星期几列的问题
你之前的代码无效是因为Table.ColumnNames(#"Expanded Data"){1}返回的是列名字符串,而Date.DayOfWeek需要的是日期类型的值,字符串无法被识别为日期,所以报错。
要实现用列位置获取对应日期值并计算星期几,你可以通过以下方式修改代码:
方法1:先获取目标列名,再通过记录字段访问值
let // 先获取第2列(索引从0开始,{1}对应第二列)的列名 TargetColName = Table.ColumnNames(#"Expanded Data"){1}, // 保留你之前的步骤,比如#"Add DAY" #"Add DAY" = ... // 你的现有步骤 #"Add DAY OF WEEK" = Table.AddColumn(#"Add DAY", "WEEK DAY", each Date.DayOfWeek(Record.Field(_, TargetColName), Day.Monday)) in #"Add DAY OF WEEK"
方法2:直接嵌套列名获取逻辑(无需单独变量)
如果不想单独定义变量,可以把列名获取逻辑直接写在each表达式里:
#"Add DAY OF WEEK" = Table.AddColumn(#"Add DAY", "WEEK DAY", each Date.DayOfWeek( Record.Field(_, Table.ColumnNames(#"Expanded Data"){1}), Day.Monday ) )
核心逻辑是:
- 在
each上下文里,_代表当前行的记录 - 用
Record.Field(_, 列名)可以从当前行记录中取出对应列的实际值,而不是列名本身 - 这样
Date.DayOfWeek就能拿到正确的日期类型值进行计算
内容的提问来源于stack exchange,提问作者Carlos Menendez Borge
相关产品推荐
相关产品推荐

