[英]Unable to join using wildcards in BigQuery
我正在尝试在大查询中联接两个表,Table1包含一个ID列,Table2包含一个具有相同ID或多个ID的列,这些列以逗号分隔的长字符串形式出现,例如“ id123,id456,id678”
如果Table1.ID = Table2.ID,我可以将表连接在一起,但这会忽略所有表,其中Table1.ID是Table2.ID中的多个ID之一。 我看过类似的帖子,告诉我使用通配符,例如
on concat('%',Table1.ID,'%') = Table2.ID
但这不起作用,因为它似乎创建了一个包含'%'字符的字符串,并且实际上并未将其用作通配符。
我在BigQuery中使用标准sql,任何帮助将不胜感激
以下示例适用于BigQuery标准SQL
#standardSQL
WITH `project.dataset.table1` AS (
SELECT 123 id, 'a' test UNION ALL
SELECT 456, 'b' UNION ALL
SELECT 678, 'c'
), `project.dataset.table2` AS (
SELECT 'id123,id456' id UNION ALL
SELECT 'id678'
)
SELECT t2.id, test
FROM `project.dataset.table2` t2, UNNEST(SPLIT(id)) id2
JOIN `project.dataset.table1` t1
ON CONCAT('id', CAST(t1.id AS STRING)) = id2
结果如下
Row id test
1 id123,id456 a
2 id123,id456 b
3 id678 c
值得怀疑的是,表中是否包含以百分号开头和结尾的值。 =
无法识别通配符; like
这样:
on Table2.ID like concat('%', Table1.ID, '%')
作为警告。 这种构造通常是性能杀手。 您最好尝试使Table1
和Table2
中的列完全匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.