【发布时间】: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