首页 > 解决方案 > 如何从 Power Query 获得 vlookup 类型体验

问题描述

我有一个这样的表(我可能会添加十几个其他列),我是从外部数据源引入的。我需要做的是计算出哪些 ID 出现在 ParentID 列中,并有一个基本上说 True 或 False 的列来回答这个问题。

所以基本上在下面的示例中 - 我希望 ID 1,4 和 5 具有“True”,因为这些值出现在 ParentID 列中,而其他值则具有 False,因为它们没有 - 所以我不想要要排除这些行或隐藏它们,只需在我的新列中以不同方式标记它们。

ID 父母ID
1 无效的
2 无效的
3 1
4 1
5 无效的
6 4
7 5
8 无效的
9 无效的
10 1

这是在 Excel 中使用 vlookup 公式很容易做到的事情,并且在 PowerQuery 中添加一个可以显示此内容的列可能很容易,但我很困惑,不知道该去哪里。我已经尝试将表与其自身合并,但似乎所能实现的只是识别为真的行或为假的行,而不是在新列中指示结果是什么。

必须有办法解决这个问题......不是吗?

标签: excel-formulapowerquery

解决方案


您可以使用List.Contains并引用上一步中的父列。

List.Contains(#"Previous Step Name"[ParentID], [ID]))

在完整的上下文中:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUcorzclRitWJVjJC5hgDOYZglgmcZYqswAzIMQGzzIEsUzDLAlmBJTLH0ABiSiwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, ParentID = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"ParentID", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each List.Contains(#"Changed Type"[ParentID], [ID]), type logical)
in
    #"Added Custom"

结果截图


推荐阅读