【问题标题】:BigQuery Standard SQL SELECT rows WHERE field contains words from another table fieldBigQuery Standard SQL SELECT rows WHERE 字段包含来自另一个表字段的单词
【发布时间】:2020-01-11 05:29:21
【问题描述】:

我在 BigQuery 中有 2 个表。 VIDEOS 表包含视频名称和标签。 CREATORS 表包含有关视频创建者的信息。 VIDEOS.tags 字段包含逗号分隔的引号字符串。

我需要在 CREATORS 表中选择所有带有名称标签的视频,结果如下所示:

Title 1, Creator 1
Title 2, Creator 2
Title 3, Creator 2
Title 4, Creator 3
Title 5, Creator 3
...

但我在下面的内容不会在 BigQuery 中返回任何结果。

SELECT
    B.name AS Title,
    C.creator_name AS Creator
FROM `project.database.VIDEOS` AS B, `project.database.CREATORS` AS C
WHERE B.tags LIKE CONCAT('%"', C.creator_name ,'"%')

【问题讨论】:

    标签: sql join google-bigquery sql-like


    【解决方案1】:

    在这种情况下通常是因为情况不同-尝试

    WHERE LOWER(B.tags) LIKE CONCAT('%"', LOWER(C.creator_name) ,'"%')
    

    【讨论】:

    • 哇,这正是发生的事情!视频被标记为小写名称和流派。我盯着桌子看了好几个小时,并没有意识到这一点。谢谢!
    【解决方案2】:

    我认为您希望它反过来:标签必须看起来像名称。告诉我

    SELECT
        B.name AS Title,
        C.creator_name AS Creator
    FROM `project.database.VIDEOS` AS B, `project.database.CREATORS` AS C
    WHERE C.creator_name LIKE CONCAT('%"', B.tags ,'"%')
    

    【讨论】:

    • 情况并非如此,因为 Creators 表仅包含工作室或品牌的名称,而 Videos 表包含标签字段,其中包括创作者以及流派、事件名称和关键字。
    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 2018-03-03
    • 2015-09-23
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多