Excel - 强力查询(或其他任何内容) - 在字段之间部分匹配时进行连接?

Excel - 强力查询(或其他任何内容) - 在字段之间部分匹配时进行连接?

在 Power Query 中(或 MS 查询或者其他任何可以创建可刷新表格的东西,让我在 Excel 中获得所需的结果),我如何才能加入两个字段之间的部分匹配?

我想做类似以下 SQL 语句的事情:

SELECT T1.SIZES AS SIZES,
       T2.PARTNO as PARTNO
FROM TABLE1 AS T1
LEFT JOIN TABLE2 AS T2
ON T2.APPLICATIONS LIKE '% ' T1.SIZES ' %'

例如:假设我有TABLE1以下字段SIZES

  • 尺寸
  • P01
  • P02
  • P03
  • P04

我有TABLE2,其中包含以下字段PART NOAPPLICATIONS

  • 帕特诺__________应用
  • 11111______________P01/P02
  • 22222______________P02/P04
  • 33333______________P01/P04

我想对 TABLE 1 和 TABLE2 进行左外连接,并返回TABLE1.SIZES和之间有部分匹配的任何行TABLE2.APPLICATIONS。结果如下:

  • 尺寸___________零件编号
  • P01______________11111
  • P01______________33333
  • P02______________11111
  • P02______________22222
  • P03______________无效的
  • P04______________22222
  • P04______________33333

我尝试遵循这个例子在 power query 中实现类似函数,并且能够创建公式,但不知道如何将其用作“查询合并”(连接)的条件。

我对 Power Query 完全是个新手……

答案1

我不会为此使用函数,我更喜欢使用最少/无代码的解决方案,因为它们更容易测试和维护。

我将首先针对 TABLE1 和 TABLE2 创建 2 个查询。我将使用每个查询上的“添加列”/“添加自定义列”按钮来添加一列。我将称之为虚拟匹配键并将公式设置为

= 1

现在回到 TABLE1 查询,我将添加合并步骤并加入到 TABLE2,使用虚拟匹配键,然后扩展 TABLE2 中的原始列。现在,您有一个巨大的交叉连接,即 TABLE1 中的每一行与 TABLE2 中的每一行。不要惊慌。即使在规模上,PQ 也能很好地处理这种情况,在我看来,它比 SQL 或专业 ETL 工具更好,后者往往需要大量内存。

无论如何,接下来我将使用添加列/添加条件列并指定:

新列名称:匹配行

如果(列)APPLICATIONS 包含(列)SIZES,则(值)是

这将只在匹配的行中为您提供一个值为“是”的列。过滤这些值并删除您不想要的任何列,您就完成了。

代码总行数 = 0。

相关内容