【问题标题】:How to apply multiple if then else statement?如何应用多个 if then else 语句?
【发布时间】:2017-05-10 07:35:58
【问题描述】:

我希望开发一个 excel 模型,它将使用 powerpivot/和 power query 从数据仓库中提取大量数据,然后根据某些规则执行一系列操作。

我已经完成了第一部分,但是,我正在努力应用这些规则。简而言之,模型应该首先检查规则 1 是否正确,如果不正确,则应该检查规则 2 是否正确,如果不正确,则检查规则 3 等等。

可能有不止 1 条规则是正确的,但是,应用的操作应基于规则的顺序。

一系列 if 语句可能会起作用,但我希望避免这种情况。

感谢任何帮助/建议。

Rules

【问题讨论】:

    标签: excel powerbi powerpivot dax powerquery


    【解决方案1】:

    我相信这是一种方法,使用外连接。

    如果您有一个规则表(Rules):

    还有一张供您记录的表格(记录):

    您可以合并每个表中的变量列,然后合并(连接)两个表,使用规则和记录表的新合并变量列作为键匹配;然后拆分新合并表中的合并变量列,最终得到这个比较结果表(比较):

    这是规则表中的 M 代码:

    let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Rule #", Int64.Type}, {"Variable 1", type text}, {"Variable 2", type text}, {"Variable 3", type text}, {"Variable 4", type text}, {"Variable 5", type text}}),
    #"Demoted Headers" = Table.DemoteHeaders(#"Changed Type"),
    #"Merged Columns" = Table.CombineColumns(#"Demoted Headers",{"Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged")
    in
    #"Merged Columns"
    

    这是记录表中的 M 代码:

    let
    Source = Excel.CurrentWorkbook(){[Name="Table15"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Record", type text}, {"Variable 1", type text}, {"Variable 2", type text}, {"Variable 3", type text}, {"Variable 4", type text}, {"Variable 5", type text}}),
    #"Demoted Headers" = Table.DemoteHeaders(#"Changed Type"),
    #"Merged Columns" = Table.CombineColumns(#"Demoted Headers",{"Column2", "Column3", "Column4", "Column5", "Column6"},Combiner.CombineTextByDelimiter(",", QuoteStyle.None),"Merged")
    in
    #"Merged Columns"
    

    这是比较表中的 M 代码:

    let
    Source = Table.NestedJoin(Records,{"Merged"},Rules,{"Merged"},"NewColumn",JoinKind.FullOuter),
    #"Expanded NewColumn" = Table.ExpandTableColumn(Source, "NewColumn", {"Column1"}, {"NewColumn.Column1"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Expanded NewColumn","Merged",Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),{"Merged.1", "Merged.2", "Merged.3", "Merged.4", "Merged.5"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Merged.1", type text}, {"Merged.2", type text}, {"Merged.3", type text}, {"Merged.4", type text}, {"Merged.5", type text}}),
    #"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
    #"Renamed Columns" = Table.RenameColumns(#"Promoted Headers",{{"Rule #", "Rule # Matched"}})
    in
    #"Renamed Columns"
    

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多