我不太确定你想生产什么,但我可以举一个一般的例子来说明什么是有效的,并且有几个猜测为什么你的例子可能会出错?
假设我的混搭是这样开始的:
let
Source = Folder.Files("c:\code\css430\Final_Project\.idea")
in
Source
我想将每个单元格加载为 XML。首先,我只需单击一个二进制单元格,然后查看 UX 自动生成的内容:
let
Source = Folder.Files("c:\code\css430\Final_Project\.idea"),
#"c:\code\css430\Final_Project\ idea\_misc xml" = Source{[#"Folder Path"="c:\code\css430\Final_Project\.idea\",Name="misc.xml"]}[Content],
#"Imported XML" = Xml.Tables(#"c:\code\css430\Final_Project\ idea\_misc xml",null,1252),
#"Changed Type" = Table.TransformColumnTypes(#"Imported XML",{{"Attribute:version", Int64.Type}})
in
#"Changed Type"
有趣的一点是在专栏Xml.Tables
上被称为。[Content]
我将删除新步骤,并添加一个自定义列,仅用于Xml.Tables([Content])
:
let
Source = Folder.Files("c:\code\css430\Final_Project\.idea"),
#"Added Custom" = Table.AddColumn(Source, "Xml", each Xml.Tables([Content]))
in
#"Added Custom"
如果你想做更多的转换而不只是调用Xml.Tables
,那么在单击一个单元格后添加更多步骤,复制代码,删除步骤并将所有转换放入Table.AddColumn
函数中。
仅当您完成所有工作后,才重构出FilePath
参数而不是硬编码的文件路径。
您的示例中可能出现的一些问题:
像这样的代码:
(FilePath, FileName) =>
let
Source = Folder.Files(FilePath),
Query1 = (FileName) => ...
意味着您要声明两个函数,每个函数都有一个名为 的参数FileName
,这稍后会令人困惑。有一些规则可以定义使用哪个参数,但最好只给它们不同的名称。
打电话Xml.Tables
给Binary.Combine
你几乎总是会给你带来麻烦。如果您复制粘贴两个 XML 文件的文本,它不会添加到新的 XML 文件中;这将是一个格式错误。始终首先将 XML 转换为 M 个表,然后组合这些表(例如Table.Combine
)。二进制组合适用于组合纯文本和 CSV 二进制文件,但实际上仅限于这些类型。
代码Source[Query1]
看起来像是将Query1
函数用于Source
表中的某些内容,但实际上意味着查找表的"Query1"
列(这将导致错误)。如果您想将转换函数应用于表格,Table.AddColumn
可能是您想要的,或者也许Table.TransformColumns