Google bigquery 使用BigQuery公共数据集分离stackoverflow的标记

Google bigquery 使用BigQuery公共数据集分离stackoverflow的标记,google-bigquery,Google Bigquery,谷歌为Stackoverflow的内容提供了一个公共数据集。我们可以了解到这一点。当我登录到GCP云控制台并访问BigQuery页面并提交以下查询时: select id, tags from `bigquery-public-data.stackoverflow.posts_questions` limit 10 显示给我的结果表将标记字段显示为连接项 如果我看一下JSON,我似乎看到了同样的情况: 我的假设是,标记将由“|”字符分隔,但数据似乎显示了另一种情况。我希望能更好地理解这一点

谷歌为Stackoverflow的内容提供了一个公共数据集。我们可以了解到这一点。当我登录到GCP云控制台并访问BigQuery页面并提交以下查询时:

select id, tags from `bigquery-public-data.stackoverflow.posts_questions` limit 10
显示给我的结果表将标记字段显示为连接项

如果我看一下JSON,我似乎看到了同样的情况:


我的假设是,标记将由“|”字符分隔,但数据似乎显示了另一种情况。我希望能更好地理解这一点。我的最终目标是执行查询以查找包含给定标记的所有问题。

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

SELECT field1, field2, ...
FROM table
WHERE fieldN LIKE pattern;
模式通常使用以下通配符编写,这些通配符可以生成类似正则表达式的表达式:

  • 百分比符号
    “%”
    查找零个或多个字符的任何字符串

    示例
    选择*其中类似“%foo%”的fieldN将返回fieldN列中包含字符串“foo”的所有条目

  • 下划线符号
    “quo
    查找任何单个字符

    示例
    选择*其中类似“A”
    的字段n将返回以字符“A”开头的所有条目

为了找到包含给定标记名的所有Stackoverflow问题,您可以使用模式
“%TAGNAME%”
。 在本例中,查询将返回标记字段包含单词“javascript”的所有条目:


发现Stackoverflows中的源数据如何转换为BigQuery表时出现了一个错误。谷歌提出了一个需要解决的问题,并最终发布消息称问题已经解决。因此,这个故事/帖子是暂时的,将来可能不会被复制,也不会有价值。

那里的标签列显然有问题,因为它们只是简单地连接起来,没有任何分隔符-非常奇怪-我想我以前没有看到过-尽管我用这个数据玩了几次我们对此表示歉意!在这里跟踪我们对此表示歉意!在这里跟踪issuetracker.google.com/issues/143784150。同时,请随意使用此数据集上一次迭代的备份,我将其留在这里:-问题现已解决;)谢谢你的来信。结果表明,对于Stackoverflow,BQ中包含的标记数据应该用“|”分隔,这样我们就可以使用split来分隔字符串。显然,此时存在的数据已被破坏,将被修复以返回分隔符。
SELECT 
  *
FROM 
  `bigquery-public-data.stackoverflow.posts_questions` 
WHERE 
  tags LIKE "%javascript%"