1

関数にロードする xml ファイルのフォルダーを取得するための M の正しい構文を理解できません。

これらは、解決方法を決定できない私の試みの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 としてロードしたいと考えています。まず、1 つのバイナリ セルをクリックして、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、1 つのセルをクリックした後にステップを追加し、コードをコピーしてステップを削除し、すべての変換をTable.AddColumn関数に入れます。

すべてが機能するようになったらFilePath、ハードコードされたファイル パスの代わりに引数をリファクタリングします。


あなたの例でうまくいかないかもしれないいくつかのこと:

次のようなコード:

(FilePath, FileName) =>
let
    Source = Folder.Files(FilePath),
    Query1 = (FileName) => ...

それぞれが という名前のパラメーターを持つ 2 つの関数を宣言していることを意味します。FileNameこれは、後で混乱するだけです。どのパラメーターを使用するかを定義する規則がありますが、異なる名前を付けるのが最善です。

Xml.Tablesの上に呼び出すと、Binary.Combineほとんどの場合、問題が発生します。2 つの XML ファイルのテキストをコピーして貼り付けても、新しい XML ファイルにはなりません。フォーマットエラーになります。常に最初に XML を M テーブルに変換してから、それらのテーブルを結合します (例: Table.Combine)。バイナリ結合は、プレーンテキストと CSV バイナリの結合には問題なく機能しますが、実際にはそれらのタイプのみです。

このコードは、テーブル上の何かに関数をSource[Query1]使用しているように見えますが、実際にはテーブルの列を見つけることを意味します (エラーが発生します)。変換関数をテーブルに適用したい場合は、おそらくあなたが望むものです。Query1Source"Query1"Table.AddColumnTable.TransformColumns

于 2016-04-17T01:45:48.553 に答える