Power BI Dataflow刷新报错:无法将List类型转换为Table类型
问题解决:Power BI Dataflow中List自动转为Table导致的刷新错误
问题根源
Power BI Dataflow不支持持久化独立的List类型对象,保存查询后会自动将外部List转为Table,导致依赖List参数的函数调用时出现类型不匹配错误。
解决方案
方案1:修改工作日函数,兼容Table输入
直接调整函数,使其接受节假日Table作为参数,并在内部自动提取日期列转为List:
= (StartDate as date, EndDate as date, HolidayTable as table) => let HolidayList = Table.Column(HolidayTable, "Date"), // 从Table提取日期列转为List DateList = List.Dates(StartDate,Number.From(EndDate-StartDate)+1,#duration(1,0,0,0)), RemoveWeekends = List.Select(DateList, each Date.DayOfWeek(_,Day.Monday) <5), RemoveHolidays = List.RemoveItems(RemoveWeekends,HolidayList), CountDays = List.Count(RemoveHolidays) in CountDays
然后在日期表的Added custom 7步骤中,将原参数HolidayList替换为你的节假日Table名称(示例中为Holidays):
#"Added custom 7" = Table.TransformColumnTypes(Table.AddColumn(#"Added custom 6", "Business Day of Year", each BusinessDays([First Business Day of Year], [Date], Holidays)), {{"Business Day of Year", Int64.Type}}),
方案2:在日期表查询内直接生成HolidayList
如果你的节假日List原本是从Table转换而来,直接在日期表查询内部生成List,避免依赖外部独立List对象:
在日期表查询的开头添加生成List的步骤:
let HolidayList = Table.Column(Holidays, "Date"), // 直接在查询内部生成日期List Today = Date.From( DateTime.LocalNow() ), // 后续原有日期表步骤...
这样就彻底规避了Dataflow对外部List的类型转换问题。
关键注意事项
Dataflow仅支持持久化Table类型的查询对象,独立的List、Record等类型对象在保存后会被自动转为Table。因此所有需要使用List的场景,要么在函数内部从Table转换,要么在查询内部直接生成。
内容的提问来源于stack exchange,提问作者zach
相关产品推荐
相关产品推荐

