You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query动态检测数据类型:多格式文件加载调用失败求助

解决ImkeF的TransformColumnTypesDynamically函数在外部数据源调用失败的问题

问题根源

该函数仅接受标准Table类型作为输入,但从外部文件(文本/CSV/Excel)、文件夹加载或跨查询调用的数据源,常因以下情况不符合输入要求:

  • 加载后未提升表头,仍为原始行数据
  • 数据源是二进制对象、嵌套列表/记录而非直接的Table
  • 跨查询输出的不是标准Table类型

针对不同场景的解决方案

1. 文本/CSV文件场景

先确保加载后的数据源完成表头提升,再传入函数:

let
    // 加载原始文本文件
    LoadedFile = #"PC Card DAta Q1 22-23",
    // 提升表头为列名(确保所有列都是标量类型)
    PromotedHeaders = Table.PromoteHeaders(LoadedFile, [PromoteAllScalars=true]),
    // 调用动态类型转换函数
    Source = TransformColumnTypesDynamically(PromotedHeaders, null)
in
    Source

2. 从文件夹加载单个文件场景

需先将二进制文件内容解析为Table,再处理表头并调用函数:

let
    // 获取文件夹加载的样本文件(通常包含二进制内容与文件信息)
    SampleFile = #"Transform Sample File",
    // 根据文件后缀选择解析方式:CSV/文本用Csv.Document,Excel用Excel.Workbook
    ParsedTable = if Text.EndsWith(SampleFile[Name], ".csv") or Text.EndsWith(SampleFile[Name], ".txt") then
                        Csv.Document(SampleFile[Content], [Delimiter=",", Encoding=1252])
                    else
                        Excel.Workbook(SampleFile[Content]){0}[Data],
    // 提升表头
    PromotedHeaders = Table.PromoteHeaders(ParsedTable, [PromoteAllScalars=true]),
    // 调用动态类型转换函数
    Source = TransformColumnTypesDynamically(PromotedHeaders, null)
in
    Source

3. 跨查询调用场景

先验证并转换输入为标准Table,再调用函数:

let
    // 获取其他查询的输出
    InputData = Input,
    // 校验并转换为标准Table
    ValidTable = if Value.Is(InputData, type table) then
                    InputData
                else if Value.Is(InputData, type list) then
                    Table.FromList(InputData, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
                else
                    error "输入不是有效的Table或可转换为Table的类型",
    // 调用动态类型转换函数
    Source = TransformColumnTypesDynamically(ValidTable, null)
in
    Source

额外注意事项

  • 如果外部文件存在嵌套列(如列表、记录),需先使用Table.ExpandListColumn或Table.ExpandRecordColumn展开,确保所有列都是标量值
  • 可通过Power Query编辑器右侧的「类型」面板,确认传入函数前的数据源是Table类型

内容的提问来源于stack exchange,提问作者Bee Hoof

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:47:37