google-bigquery - 如何检查 Google BigQuery SQL 中的多个模式?(喜欢 + 输入)
问题描述
所以我必须在一个 BigQuery 表中搜索一堆名字,我会定期在另一个数据集中收集这些名字。此时数据集太大,包含近 6 万个名字,我再也做不到了
SELECT * FROM base.table WHERE name LIKE '%name1%' OR name LIKE '%name2%.....
当我使用 python 脚本尝试它时:
SELECT * FROM base.table WHERE name LIKE({' OR '.join([f'ulv4.full_name LIKE %{name}%' for name in names])})
但是对于这么多名称,查询的字符限制超过了。我尝试查看类似这样的解决方案以及同一问题的其他答案,但似乎没有答案适用于 BigQuery 标准 SQL。非常感谢这方面的任何帮助。
解决方案
您应该将名称保留在另一个表中,然后加入它:
SELECT *
FROM base.table t1
WHERE EXISTS (SELECT 1 FROM other.table t2
WHERE t1.name LIKE CONCAT('%', t2.name, '%'));
然后,base.table
只有当它包含来自另一个表的某些子字符串名称时,它才会匹配。
推荐阅读
- cassandra - cassandra 与恢复的节点同步
- ios - 使用 Apple 登录
- python - 在 Python 中交换大文件字节的最快方法
- selenium - 寻找 org.openqa.selenium.support.ui.Select jar 路径
- java - 复合关系将父引用分配给子/反序列化
- android - 无法在本机反应中看到来自android存储的图像
- java - 当我们尝试使用 @Value 注释从 appliction.properties 访问值时,trim() 不起作用
- php - wget 作为后台任务,然后是连续的后台任务
- javascript - 如何防止页面在长循环中冻结,而不会失去“for”或“forEach”的精度?
- python - Python NameError,我无法理解