簡體   English   中英

無法在BigQuery中使用通配符加入

[英]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, '%')

作為警告。 這種構造通常是性能殺手。 您最好嘗試使Table1Table2中的列完全匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM