我无法在M中找到正确的语法来获取要加载到我的函数中的xml文件的文件夹。
这些是我无法确定解决方法的两次尝试。
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
答案 0 :(得分:1)
我不太确定你想要制作什么,但我可以给出一个有用的一般例子,并且有几个猜测为什么你的例子可能会出错?
说我的mashup就像这样开始:
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