【问题标题】:Excel Power Query Conditional Code BranchingExcel Power Query 条件代码分支
【发布时间】:2021-12-11 06:39:59
【问题描述】:

我需要根据条件应用确定的 Power Query 步骤。此条件是一个包含布尔值的单元格。

没有分支的原始代码是:

let
Source = Folder.Files("\\ant\fc\Dept\AMZL\EU\East\DMZ1\03. OPERATIONS\03. Night Shift\02. Tools\Node Splitter Tool\Data"),
OnlyContainers = Table.SelectRows(Source, each Text.Contains([Name], "Container")),
bagBoolean = Excel.CurrentWorkbook(){[Name="bagBoolean"]}[Content]{0}[Column1],
ExtractVRID = Table.TransformColumns(OnlyContainers, {{"Name", each Text.BeforeDelimiter(_, "_"), type text}}),
DesiredVRID = Table.NestedJoin(ExtractVRID, {"Name"}, VRID_Info, {"VRID"}, "VRID_Info", JoinKind.Inner),
CustomFunction = Table.AddColumn(DesiredVRID, "Transform File (2)", each #"Transform File (2)"([Content])),
ExpandTable = Table.ExpandTableColumn(CustomFunction, "Transform File (2)", Table.ColumnNames(#"Transform File (2)"(#"Sample File (2)"))),
RemoveUselessColumns = Table.RemoveColumns(ExpandTable,{"Content", "Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "VRID_Info", "Column3", "Column4", "Column6", "Column5"}),
Headers = Table.PromoteHeaders(RemoveUselessColumns, [PromoteAllScalars=true]),
OnlyUsefullRows = Table.SelectRows(Headers, each Text.Contains([Parent Container], "_")),
RenamedTracking = Table.RenameColumns(OnlyUsefullRows,{{"Container Id", "Tracking ID"}}),
MergedQueriesJPBags = Table.NestedJoin(RenamedTracking, {"Parent Container"}, BagJP_Relation, {"Container Id"}, "BagJP_Relation", JoinKind.LeftOuter),
ExpandedBagJP_Relation = Table.ExpandTableColumn(MergedQueriesJPBags, "BagJP_Relation", {"Parent Container"}, {"BagJP_Relation.Parent Container"}),
NoBagsCustomColumn = Table.AddColumn(ExpandedBagJP_Relation, "Custom", each let splitParentContainer = Splitter.SplitTextByDelimiter("BAG_", QuoteStyle.None)([Parent Container]) in Text.Combine({[BagJP_Relation.Parent Container], splitParentContainer{0}?}), type text),
RemovedColumns = Table.RemoveColumns(NoBagsCustomColumn,{"Parent Container", "BagJP_Relation.Parent Container"}),
ReorderedColumns = Table.ReorderColumns(RemovedColumns,{"Custom", "Tracking ID"}),
RenamedColumns = Table.RenameColumns(ReorderedColumns,{{"Custom", "Parent Container"}}),
NoBags = Table.SelectRows(RenamedColumns, each not Text.StartsWith([Tracking ID], "BAG")),
AddedIndex = Table.AddIndexColumn(NoBags, "Index", 1, 1, Int64.Type)
in
    AddedIndex

如果 bagBoolean 值为 TRUE,我想将 from MergedQueriesJPBags 步骤应用到 NoBags 步骤。

这是我尝试过的,但出现语法错误:

let
Source = Folder.Files("\\ant\fc\Dept\AMZL\EU\East\DMZ1\03. OPERATIONS\03. Night Shift\02. Tools\Node Splitter Tool\Data"),
OnlyContainers = Table.SelectRows(Source, each Text.Contains([Name], "Container")),
bagBoolean = Excel.CurrentWorkbook(){[Name="bagBoolean"]}[Content]{0}[Column1],
ExtractVRID = Table.TransformColumns(OnlyContainers, {{"Name", each Text.BeforeDelimiter(_, "_"), type text}}),
DesiredVRID = Table.NestedJoin(ExtractVRID, {"Name"}, VRID_Info, {"VRID"}, "VRID_Info", JoinKind.Inner),
CustomFunction = Table.AddColumn(DesiredVRID, "Transform File (2)", each #"Transform File (2)"([Content])),
ExpandTable = Table.ExpandTableColumn(CustomFunction, "Transform File (2)", Table.ColumnNames(#"Transform File (2)"(#"Sample File (2)"))),
RemoveUselessColumns = Table.RemoveColumns(ExpandTable,{"Content", "Name", "Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "VRID_Info", "Column3", "Column4", "Column6", "Column5"}),
Headers = Table.PromoteHeaders(RemoveUselessColumns, [PromoteAllScalars=true]),
OnlyUsefullRows = Table.SelectRows(Headers, each Text.Contains([Parent Container], "_")),
RenamedTracking = Table.RenameColumns(OnlyUsefullRows,{{"Container Id", "Tracking ID"}}),

// If
MergedQueriesJPBags = Table.NestedJoin(RenamedTracking, {"Parent Container"}, BagJP_Relation, {"Container Id"}, "BagJP_Relation", JoinKind.LeftOuter),
ExpandedBagJP_Relation = Table.ExpandTableColumn(MergedQueriesJPBags, "BagJP_Relation", {"Parent Container"}, {"BagJP_Relation.Parent Container"}),
NoBagsCustomColumn = Table.AddColumn(ExpandedBagJP_Relation, "Custom", each let splitParentContainer = Splitter.SplitTextByDelimiter("BAG_", QuoteStyle.None)([Parent Container]) in Text.Combine({[BagJP_Relation.Parent Container], splitParentContainer{0}?}), type text),
RemovedColumns = Table.RemoveColumns(NoBagsCustomColumn,{"Parent Container", "BagJP_Relation.Parent Container"}),
ReorderedColumns = Table.ReorderColumns(RemovedColumns,{"Custom", "Tracking ID"}),
RenamedColumns = Table.RenameColumns(ReorderedColumns,{{"Custom", "Parent Container"}}),
NoBags = Table.SelectRows(RenamedColumns, each not Text.StartsWith([Tracking ID], "BAG")),
AddedIndex = Table.AddIndexColumn(NoBags, "Index", 1, 1, Int64.Type)

//Then
AddedIndex1 = Table.AddIndexColumn(RenamedTracking, "Index", 1, 1, Int64.Type)

result =
    if bagBoolean 
    then AddedIndex
    else AddedIndex1
in
    result
    

【问题讨论】:

    标签: excel powerbi powerquery


    【解决方案1】:

    尝试在这些行的末尾添加逗号

    • 添加索引=

    • AddedIndex1=

    所有这些都应该由编辑为您标记

    【讨论】:

      猜你喜欢
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      相关资源
      最近更新 更多