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

Power Query文件夹导入时Transform File如何接收Transform Sample File内容

你观察到的「Transform Sample File内容出现在Transform File里」是Power Query编辑器的编辑阶段同步机制,不是运行时的数据传递,二者运行时完全独立,没有内容接收关系,具体逻辑如下:


核心运行逻辑拆解

1. 四个辅助对象的生成关系

你使用「从文件夹批量导入文件」功能时,Power Query为了降低自定义函数的编写门槛,自动生成了四个绑定关系的对象:

  • Sample File:固定取文件夹内第一个文件的二进制内容,作为转换操作的样本源
  • Parameter 1:二进制类型参数,默认绑定Sample File的内容,给样本查询做输入源
  • Transform Sample File:给用户可视化编辑用的样本查询,所有你在界面上做的拆分列、改格式、筛选等操作,都会直接保存为这个查询的步骤
  • Transform File:系统自动维护的自定义函数,你每次保存对Transform Sample File的修改,编辑器会自动把完全相同的步骤同步写入这个函数的内部逻辑里,这就是你看到的内容“凭空出现”的原因。

你可以对比你给出的两段代码,二者的转换步骤完全一致:
Transform Sample File的代码:

let
    Source = Csv.Document(Parameter1,[Delimiter="|", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    A = custom_step_a,
    B = custom_step_b,
    C = custom_step_c
in
    C

Transform File函数的内部逻辑:

let
    Source = (Parameter1 as binary) => let
        Source = Csv.Document(Parameter1,[Delimiter="|", Columns=5, Encoding=65001, QuoteStyle=QuoteStyle.None]),
        A = custom_step_a,
        B = custom_step_b,
        C = custom_step_c
    in
        C
in
    Source

二者唯一的区别是Transform File把输入变成了可动态传入的二进制参数,没有绑定固定的Sample File内容。

2. 运行时的实际执行流程

主查询运行时,完全不会调用Transform Sample File,流程如下:

  1. 先拉取目标文件夹下所有文件的元数据表,包含每个文件的二进制内容字段[Content]
  2. 遍历元数据表的每一行,把当前行的[Content](单个文件的二进制)传入Transform File函数
  3. 函数执行内部预存的转换步骤,返回处理后的单文件表,最后把所有表合并成总表

3. 设计目的

这个机制是为了降低批量处理的操作门槛:你不需要手动编写自定义函数,只需要对着可视化的样本文件做操作,系统自动把你的操作步骤转换成可复用的批量处理函数,大幅减少手动写M代码的成本。

内容的提问来源于stack exchange,提问作者Mitten Wald

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:03