簡體   English   中英

Power BI M 語言列表。選擇如何按日期過濾

[英]Power BI M Language List.Select How to filter by Date

當我使用這個: List.Select({[Date1], [Date2], [Date3]}, each _ < [Date4]) 它返回錯誤。 但是當我使用這個代碼時: List.Select({"2020-01-01", "2020-02-01", "2020-03-01"}, each _ < "2020-04-01") 它返回值列表。

首先,我假設這是在 Table.AddColumn 之類的函數的上下文中 - 如果是這樣,那么您的錯誤原因是:您正在引用內部函數的列表項參數而不是外部函數的表記錄參數[Date4]”參考。

一旦您在所涉及的語法糖下公開完整代碼,就更容易看到修復:只需為您的內部參數使用不同的標識符。

    List.Select(
            {[Date1],[Date2],[Date3]},
            (ListItem)=> ListItem < [Date4]
    )

以上是如何工作的? 查看原始的完整 M 代碼以獲得一個想法,再次假設我們正在使用 Table.AddColumn 之類的函數:

= Table.AddColumn(
    Table1, 
    "New Column Name", 
    each List.Select(
        {[Date1],[Date2],[Date3]},
         each _ < [Date4]
    )
)

我們可以看到實際上有兩個在玩。 三點幫助我們理解問題:

  1. “each”是“(_)=>”的語法糖,它定義了一個函數,其中傳遞的參數用“_”引用
  2. 傳遞給外部的值是表的當前行作為記錄,其中行中的每一列/值是所述記錄中的一個字段; 方括號用於訪問記錄中的字段
  3. 對沒有記錄的字段的引用假定“_”是記錄,例如“[Date1]”沒有指定記錄只是“_[Date1]”的語法糖

有了以上幾點,我們可以將代碼改寫如下

    = Table.AddColumn(
        Table1, 
        "New Column Name", 
        (_)=> List.Select(
            {_[Date1],_[Date2],_[Date3]},
            (_)=> _ < _[Date4]
        )
    )

現在您可以看到有一個外部“_”將表的每一行作為記錄引用,它允許我們訪問帶有例如“_[Date1]”的字段。 另一方面,內部“_”正在訪問輸入列表的每個值。 因此,在最內層函數“_ < _[Date4]”的上下文中,“_”僅指內部的“_” - 即您試圖從日期值訪問記錄字段,從而導致錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM