【问题标题】:Convert DAX if statement to Power Query (or M)?将 DAX if 语句转换为 Power Query(或 M)?
【发布时间】:2020-02-29 00:55:45
【问题描述】:

我需要创建一个计算列来过滤具有以下结构的表格模型表:

表 1

| ID  | Attr A    | Attr B | Value |
|-----|-----------|--------|-------|
| 123 | text here | blah   | 130   |
| 123 | blah      | blah   | 70    |
| 456 | blah      | blah   | 90    |
| 456 | blah      | blah   | 110   |

我希望创建以下新列:

| ID  | Attr A    | Attr B | Value | MaxValue |
|-----|-----------|--------|-------|----------|
| 123 | text here | blah   | 130   | TRUE     |
| 123 | blah      | blah   | 70    | FALSE    |
| 456 | blah      | blah   | 90    | FALSE    |
| 456 | blah      | blah   | 110   | TRUE     |

我想使用 Power Query 创建一个与以下 DAX 语句等效的计算列除此以外。

= IF(CALCULATE(MAX('Table1'[Value]),ALLEXCEPT('Table1','Table1'[ID])) = 'Table1'[Value], TRUE(), FALSE())

附:我使用默认的 M 语言编辑器来生成 if shell 语句,所以这与我正在寻找的类似:

= Table.AddColumn(#"Changed Type", "MaxValue", each if [#"[Value]"] = 'some logic here' then true else false)

【问题讨论】:

    标签: dax powerquery m


    【解决方案1】:

    如果您的源表是这样设置的并称为 Table1:

    那么这个 M 代码应该可以满足您的要求:

    let
        Source = Table1,
        #"Grouped Rows" = Table.Group(Source, {"ID"}, {{"ValueMax", each List.Max([Value]), type number}, {"AllData", each _, type table [ID=text, Attr A=text, Attr B=text, Value=number]}}),
        #"Expanded AllData" = Table.ExpandTableColumn(#"Grouped Rows", "AllData", {"Attr A", "Attr B", "Value"}, {"Attr A", "Attr B", "Value"}),
        #"Added Custom" = Table.AddColumn(#"Expanded AllData", "MaxValue", each [ValueMax]=[Value]),
        #"Removed Other Columns" = Table.SelectColumns(#"Added Custom",{"ID", "Attr A", "Attr B", "Value", "MaxValue"})
    in
        #"Removed Other Columns"
    

    它应该给你这个结果:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 2020-05-19
      • 2022-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      相关资源
      最近更新 更多