BigQuery 加入相似的键
BigQuery join on similar keys
我的两个表中的键值可能会略有不同,因为它们都是通过自由文本独立输入的。任何人的眼睛都会发现它们是相同的,但表格太大而无法为每种类型的不匹配创建正则表达式规则。
例如,这些应该匹配:
This Is Key One
和This is Key one
Subject:the Description
和Subject: the Description
I am key two!
和I am key two
如何创建这样的查询? (如果在 BQ 中甚至可能的话)
首先,您需要确定密钥相似的每一种可能方式。例如,一个是忽略大小写,另一个是删除特殊字符,如“!”。您可以制作一个用户定义的函数来处理所有此类情况 "clean" 或 "standarize" 键。
使用自定义函数创建一个新的清理 table 并在清理 table 上查询(并且从那时起在附加更多行之前始终清理键)
Zig 建议的使用用户定义函数的替代方法是使用各种 BigQuery string functions 来清理数据。
但是,无论您使用什么方法,您都需要在联接之前在子查询中执行此操作,或者您必须在查询之前将其作为预备步骤执行。 BigQuery 目前仅支持连接谓词,它们是相等比较的连词(即 a.key1 = b.key1 AND a.key2 = b.key2 等)。
我的两个表中的键值可能会略有不同,因为它们都是通过自由文本独立输入的。任何人的眼睛都会发现它们是相同的,但表格太大而无法为每种类型的不匹配创建正则表达式规则。
例如,这些应该匹配:
This Is Key One
和This is Key one
Subject:the Description
和Subject: the Description
I am key two!
和I am key two
如何创建这样的查询? (如果在 BQ 中甚至可能的话)
首先,您需要确定密钥相似的每一种可能方式。例如,一个是忽略大小写,另一个是删除特殊字符,如“!”。您可以制作一个用户定义的函数来处理所有此类情况 "clean" 或 "standarize" 键。
使用自定义函数创建一个新的清理 table 并在清理 table 上查询(并且从那时起在附加更多行之前始终清理键)
Zig 建议的使用用户定义函数的替代方法是使用各种 BigQuery string functions 来清理数据。
但是,无论您使用什么方法,您都需要在联接之前在子查询中执行此操作,或者您必须在查询之前将其作为预备步骤执行。 BigQuery 目前仅支持连接谓词,它们是相等比较的连词(即 a.key1 = b.key1 AND a.key2 = b.key2 等)。