2017-08-11 35 views
-1

Power Query M言語のクロージャは再帰的に実行できますか?電力クエリクロージャと再帰;これに関する教科書?

関数は再帰的に実行できます。関数名クエリフィボナッチの名前は、

(X) => 
let 
    Fib = if X <= 1 then 1 else X + Fibonacci(X - 1) 
in 
    Fib 

となります。私がしようとすると、単一のクエリ内に立つときしかし、それは失う:

let 
    Fib = (X)=> if X <= 1 then 1 else X + Fib(X - 1), 
    Source = Table.FromRecords({[X=1],[X=2],[X=3],[X=5]}), 
    UseIntFib = Table.AddColumn(Source, "Fib", each Fib([X])) 
in 
    UseIntFib 

結果のテーブルがエラーというメッセージされている「のFib見つからない、インポートすることを忘れなかったと

1 1 
2 Error 
3 Error 
5 Error 

ですモジュール? '

他の方法がありますか?あるいは、再帰関数が必要な場合は、それ自身のクエリとして立てなければなりませんか?

メタはを照会 - Mでは、

Fib = (X)=> if X <= 1 then 1 else X + Fib(X - 1) 

などのローカルに定義された関数は閉鎖、またはラムダ式と呼ばれる、または何ですか?私は使用されているのを見たことがありますが、聞いたことがありませんという名前のです。だから私はそれらについての投稿を検索する方法がわからない。

パワークエリークロージャについて私に教える良い教科書やオンラインソースはありますか?私のgo-toテキストMは(データ)Monkeyのためのもので、ほとんど何も言われていません。大抵、私はたくさんの例が好きです。私は/

  • マルチステートメントクロージャを使用して比較し、それらを
  • 再帰と相互再帰
  • を使用するときは、関連について

    • 方法を知りたい - 使用をしましょうとしましょう。
    • あなたは再帰関数を呼び出すしたい場合は、いわゆる「スコープ演算子」として@を追加する必要があるので、このコードはOKです(私はちょうどあなたの「のFib」に@を追加、彼らに
  • +1

    以前の質問に対する私の答えに親切にお答えいただける方は、https://stackoverflow.com/questions/45623765/excel-power-query-using-list-matchany-on-a-column-value 私はこの新しい質問に反応することを検討します。 – MarcelBeug

    +0

    完了し、ありがとうございます。私はまだStackOverflowの周りに自分の道を学んでいます。申し訳ありませんが、私は速やかに反応しませんでした。 –

    答えて

    1

    のデバッグコード):https://msdn.microsoft.com/en-us/library/mt807488.aspx?f=255&MSPPError=-2147217396

    (3.3.1 28ページ、6.3 58ページ、および最後のではなく、少なくとも9.4/9.5:あなたがパワークエリ言語仕様(2016年10月)でのより多くの情報を見つけることができ

    let 
        Fib = (X)=> if X <= 1 then 1 else X + @Fib(X - 1), 
        Source = Table.FromRecords({[X=1],[X=2],[X=3],[X=5]}), 
        UseIntFib = Table.AddColumn(Source, "Fib", each Fib([X])) 
    in 
        UseIntFib 
    

    92/92ページ)。

    +0

    Marcelさん、コード修正と参照の両方に感謝します。私はMを初めて学び始めたときに言語仕様をダウンロードしましたが、理解しようとすると圧倒されました。 (あまりにも早く、あまりにも。)メモの後、私はそれを掘り出し、あなたが指したところを読んでいます。今私にとってはもっと意味があります。 –

    関連する問題