我正在尝试在电源查询中使用 if 公式。例如,如果列包含“guy”,则值为“male”,错误值为“female”。我尝试了不同的方法,但找不到在电源查询中使用的正确公式。有人可以帮我吗?
如果您将其输入到
Add Custom Column
对话框中,请输入类似(不区分大小写)的内容:
= if Text.Contains([Column],"guy", Comparer.OrdinalIgnoreCase) then "male" else "female"
听起来您想要根据该列中的现有值有条件地替换该列中的值?如果是这样,您可以使用 Power Query 中的 Table.ReplaceValue 函数:
= Table.ReplaceValue(Source,
each [Gender],
each if [Gender] = "guy" then "male" else "female",
Replacer.ReplaceText,{"Gender"})
这会将“guy”的所有值更改为“male”,并将所有其他值更改为“female”,如您所述。
您还可以保留不符合条件的值,只需引用列名称而不是指定新值:
= Table.ReplaceValue(Source,
each [Gender],
each if [Gender] = "guy" then "male" else [Gender],
Replacer.ReplaceText,{"Gender"})
创建一个包含名为 Gender 的列的表,并将其加载到 Power 查询中。右键单击列标题并选择“替换值”以获取为您构建语句的 UI,然后用上述修改替换生成的代码并应用到您的实际要求。关键是使用 each 表达式告诉 Power Query 在行值级别进行测试。如果省略 each,您将看到错误:
“Expression.Error:存在未知标识符。您是否在“each”表达式之外使用了 _[field] 的 [field] 简写?”
= Table.AddColumn(#"Changed Type","ColumnName",each if[Column] ="""Guy""" then"""Male""" else"""Female""")
亚历克斯在这里,很高兴认识你!
首先,确保列的数据类型设置为文本。
现在,请确保包含“guy”的列始终采用一致的格式,因为 Power Query 区分大小写。如果发现差异,请转到“转换”选项卡,按“格式”,然后使用该选项将文本转换为小写或大写第一个字母。
接下来,转到“添加列”选项卡,选择“条件列”,然后选择您的列。对于条件,请使用“等于”并输入“guy”。然后,将值为 true 的值设置为“male”,将其他结果的值设置为“female”。
祝你好运!如果您还有更多问题,请随时提问。