Google bigquery Google BigQuery按包含关键字分组

Google bigquery Google BigQuery按包含关键字分组,google-bigquery,Google Bigquery,给出一个示例数据集,我正在尝试对其进行排序: email,domain_name name1@email.com,superlorem.com name2@email.com,superdolor.com name3@email.com,superamet.com name4@email.com,badlorem.com name5@email.com,baddolor.com name6@email.com,badamet.com 我从一个问题开始,比如。。。 选择电子邮件 从桌子上 哪里

给出一个示例数据集,我正在尝试对其进行排序:

email,domain_name
name1@email.com,superlorem.com
name2@email.com,superdolor.com
name3@email.com,superamet.com
name4@email.com,badlorem.com
name5@email.com,baddolor.com
name6@email.com,badamet.com
我从一个问题开始,比如。。。 选择电子邮件 从桌子上 哪里 (域名包含“dolor”)或 (域名包含“sit”)或 (域名包含“amet”) 通过电子邮件分组

是否可以按“包含”字对结果进行分组,例如“dolor”、“sit”和“amet”?这些单词本身不会出现在列中(例如作为域名的一部分,superlipsum.com)。我的最终目标是创建一个类似以下内容的CSV:

Dolor,column1
Dolor,column2
Dolor,column3
Sit,column4
Sit,column5
Sit,column6
Sit,column7    
Amet,column8

您需要一张单独的桌子,上面有所有的单词(dolor、sit、amet等)
那么,下面应该可以了

SELECT 
  word,
  email
FROM yourTable AS t1
CROSS JOIN wordsTable AS t2
WHERE domain_name CONTAINS word
ORDER BY word, email  
如果你的单词列表有限,你可以使用下面的(即时)版本

两者都会产生如下结果

word    email    
amet    name3@email.com  
amet    name6@email.com  
dolor   name2@email.com  
dolor   name5@email.com  

另一种选择是使用正则表达式,即

SELECT 
 regexp_extract(domain_name, r'(dolor|sit|amet)' word,
 email, 
FROM table

BigQuery将为正则表达式编译一次自动机,并将其有效地应用于所有行。我希望这会比JOIN提供更好的性能。

您能提供表数据的示例,这些数据将以预期的输出操作结束,无法格式化注释,因此我将编辑您问题中的postare电子邮件和域名这两列(a和b)?在这种情况下,“列”是什么?感谢您的及时回复,并对延迟表示歉意!我在打电话,还没有完成问题的编辑。重要的是-你可以
使用投票下方张贴的答案左侧的勾号标记接受的答案
。看看为什么它很重要!此外,最好的做法是对答案进行投票。投票选出有帮助的答案。还有更多。。。当有人回答您的问题时,您可以检查该怎么做-。只需注意:使用regexp\u extract的限制是,您只能硬编码值,因此使用大量单词的更通用的大小写将无法很好地工作或根本无法工作
SELECT 
 regexp_extract(domain_name, r'(dolor|sit|amet)' word,
 email, 
FROM table