Power Query调用List.Dates添加自定义日期表列时报类型转换错误
问题场景
在Power Query中添加自定义列,目标是基于起始日期生成对应日期表,初始编写的M语法如下:
= Table.AddColumn(TypeDate, "AddTable", each Table.FromList( List.Dates([Date_begin],1,#duration(1,0,0,0) )))
涉及参数说明:
TypeDate:当前Power Query查询的最后一步名称"AddTable":新增自定义列的名称[Date_begin]:存储日期列表起始日期的列
报错信息
运行代码后Power Query返回的报错翻译如下:
表达式错误:无法将值 #date(2021, 1, 1) 转换为文本。
详细信息:
值=01/01/2021
类型=[Type]
报错原因
Table.FromList函数未显式指定拆分逻辑时,默认会将传入列表的元素按文本类型处理以执行拆分操作,而List.Dates生成的是日期类型值,隐式类型转换失败触发报错。
修复方案
方案1:显式指定Table.FromList的拆分参数
给Table.FromList传入不做任何拆分的拆分器,同时指定列名和对应类型,避免隐式文本转换,修正后代码:
= Table.AddColumn(TypeDate, "AddTable", each Table.FromList( List.Dates([Date_begin],1,#duration(1,0,0,0)), Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error ))
参数说明:
Splitter.SplitByNothing():不对列表元素做任何拆分,每个元素直接作为单行单值存入表格,不会触发文本转换逻辑{"Date"}:为生成的单列表指定列名,可按需替换为自定义名称
方案2:直接用#table构造器生成表(更简洁)
由于当前逻辑仅需生成包含单个起始日期的单列表格,可直接用表构造器编写,完全规避类型转换问题:
= Table.AddColumn(TypeDate, "AddTable", each #table(type table [Date = date], {{[Date_begin]}}))
内容的提问来源于stack exchange,提问作者Helio_Prado
相关产品推荐
相关产品推荐

