1

我无法在 M 中找到正确的语法,以便将 xml 文件的文件夹加载到我的函数中。

这是我无法确定解决方法的 2 次尝试。

let ExcelFile = (FilePath, FileName) =>
let
    Source = Folder.Files(FilePath),
    Query1 = (FileName) => [FirstResult=Meeting(FileName), SecondResult=Race(FileName), ThirdResult=Reference(FileName), FourthResult=Horses(FileName)]
in
  ExcelFile

示例 2

let  xmlImport = (FilePath, FileName) =>
let
    Source = Folder.Files(FilePath),
    Query1 = (FileName) => [FirstResult=Meeting(FileName), SecondResult=Race(FileName), ThirdResult=Reference(FileName), FourthResult=Horses(FileName)],
    content = Binary.Combine(Source[Query1]),
    xmlImport = Xml.Tables(content)
in
    xmlImport
4

1 回答 1

1

我不太确定你想生产什么,但我可以举一个一般的例子来说明什么是有效的,并且有几个猜测为什么你的例子可能会出错?


假设我的混搭是这样开始的:

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.TablesBinary.Combine你几乎总是会给你带来麻烦。如果您复制粘贴两个 XML 文件的文本,它不会添加到新的 XML 文件中;这将是一个格式错误。始终首先将 XML 转换为 M 个表,然后组合这些表(例如Table.Combine)。二进制组合适用于组合纯文本和 CSV 二进制文件,但实际上仅限于这些类型。

代码Source[Query1]看起来像是将Query1函数用于Source表中的某些内容,但实际上意味着查找表的"Query1"列(这将导致错误)。如果您想将转换函数应用于表格,Table.AddColumn可能是您想要的,或者也许Table.TransformColumns

于 2016-04-17T01:45:48.553 回答