如何有条件地替换 Powerquery 中的某些选定列
How can one conditionally Replace some selected columns in Powerquery
我有一组数据,我希望替换一些包含彼此相邻的值 1、1、F 的列。
每当 powerquery 看到这些包含 1,1 的三列彼此相邻时,F respectively.I 希望它替换该组值中的列组,例如 0, 0, *
我知道如何用另一个值替换值,但是我只想在这些值出现时将其替换为集合。
有的时候我也很强烈的去解决了,但是没有用。
点击此处查看挑战:
谢谢。
可以用复杂的公式来完成,但是做你想做的简单方法是:
添加列..自定义列..用公式来测试这 3 列
if [exammth] = 1 and [mth] =1 and [mthgrde] ="F" then "b" else "a"
使用列顶部的箭头筛选 bs
右击将三列变换为0,0,*
对于数字,选择任何转换函数然后将公式更改为 each 0,对于 alpha 列使用 each "*"
与原始数据重新组合,过滤为as
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Class", type text}, {"camth", Int64.Type}, {"exammth", Int64.Type}, {"mth", Int64.Type}, {"mthgrde", type text}, {"caecons", Int64.Type}, {"examecons", Int64.Type}, {"ecpms", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each if [exammth] = 1 and [mth] =1 and [mthgrde] ="F" then "b" else "a"),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = "b")),
Replace1 = Table.TransformColumns(#"Filtered Rows",{{"exammth", each 0, Int64.Type}}),
Replace2 = Table.TransformColumns(Replace1,{{"mth", each 0, Int64.Type}}),
Replace3 = Table.TransformColumns(Replace2,{{"mthgrde", each "*", type text}}),
combined = Replace3 & Table.SelectRows(#"Added Custom", each ([Custom] = "a") )
in combined
此步骤将满足指定条件的指定列的值替换为0:
= Table.ReplaceValue(#"Previous Step", each [exammth] = 1 and [mth] = 1 and [mthgrade] = "F", 0, (x,y,z)=> if y then z else x, List.Select(Table.ColumnNames(#"Previous Step"), each List.Contains({"exammth","mth","mthgrade"},_)))
我有一组数据,我希望替换一些包含彼此相邻的值 1、1、F 的列。 每当 powerquery 看到这些包含 1,1 的三列彼此相邻时,F respectively.I 希望它替换该组值中的列组,例如 0, 0, * 我知道如何用另一个值替换值,但是我只想在这些值出现时将其替换为集合。 有的时候我也很强烈的去解决了,但是没有用。
点击此处查看挑战:
谢谢。
可以用复杂的公式来完成,但是做你想做的简单方法是:
添加列..自定义列..用公式来测试这 3 列
if [exammth] = 1 and [mth] =1 and [mthgrde] ="F" then "b" else "a"
使用列顶部的箭头筛选 bs
右击将三列变换为0,0,* 对于数字,选择任何转换函数然后将公式更改为 each 0,对于 alpha 列使用 each "*"
与原始数据重新组合,过滤为as
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Class", type text}, {"camth", Int64.Type}, {"exammth", Int64.Type}, {"mth", Int64.Type}, {"mthgrde", type text}, {"caecons", Int64.Type}, {"examecons", Int64.Type}, {"ecpms", Int64.Type}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each if [exammth] = 1 and [mth] =1 and [mthgrde] ="F" then "b" else "a"),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = "b")),
Replace1 = Table.TransformColumns(#"Filtered Rows",{{"exammth", each 0, Int64.Type}}),
Replace2 = Table.TransformColumns(Replace1,{{"mth", each 0, Int64.Type}}),
Replace3 = Table.TransformColumns(Replace2,{{"mthgrde", each "*", type text}}),
combined = Replace3 & Table.SelectRows(#"Added Custom", each ([Custom] = "a") )
in combined
此步骤将满足指定条件的指定列的值替换为0:
= Table.ReplaceValue(#"Previous Step", each [exammth] = 1 and [mth] = 1 and [mthgrade] = "F", 0, (x,y,z)=> if y then z else x, List.Select(Table.ColumnNames(#"Previous Step"), each List.Contains({"exammth","mth","mthgrade"},_)))