为 stackoverflow 使用 BigQuery public 数据集分隔标签

Separating tags with BigQuery public dataset for stackoverflow

Google 为 Whosebug 的内容提供了一个 public 数据集。我们可以读到这个 ​​here。当我登录 GCP Cloud Console 并访问 BigQuery 页面并提交以下查询时:

select id, tags from `bigquery-public-data.Whosebug.posts_questions` limit 10

向我显示的结果 table 将标签字段显示为串联项。

如果我查看 JSON,我似乎看到了相同的内容:

我的假设是标签将由“|”分隔性格,但数据似乎并非如此。我希望能更好地理解这一点。我的最终目标是执行查询以查找包含给定标签的所有问题。

要查找包含给定标签名称的所有 Whosebug 问题,您可以使用 SQL 运算符 LIKE。在数据库字段中查找特定模式时,此运算符非常有用。它在 WHERE 语句之后指定,语法如下:

SELECT field1, field2, ...
FROM table
WHERE fieldN LIKE pattern;

模式通常使用以下通配符编写,可以生成类似正则的表达式:

  • 百分号 "%" 查找任何包含零个或多个字符的字符串。

    示例SELECT * WHERE fieldN LIKE "%foo%" 将 return 字段 N 列中包含字符串 "foo" 的所有条目。

  • 下划线符号 "_" 查找任何单个字符。

    示例SELECT * WHERE fieldN LIKE "A_" 将 return 所有以字符 "A".

    [=41 开头的条目=]

为了找到所有包含给定标签 TAGNAME 的 Whosebug 问题,您可以使用模式 "%TAGNAME%"。 在此示例中,查询将 return 标签字段包含单词 "javascript":

的所有条目
SELECT 
  *
FROM 
  `bigquery-public-data.Whosebug.posts_questions` 
WHERE 
  tags LIKE "%javascript%"

我们发现将 Whosebugs 中的源数据转换为 BigQuery 表的方式存在错误。 Google 创建了一个要解决的问题,并最终发布了该问题已修复的消息。因此,这个 story/posting 是 短暂的 并且将来可能无法复制也没有价值。