【问题标题】:Nested queries for text matching in BigQueryBigQuery 中文本匹配的嵌套查询
【发布时间】:2013-03-22 04:24:18
【问题描述】:

我想知道是否有一种方法可以对我正在尝试在我拥有的推文数据集上运行的文本匹配运行嵌套查询。我在 BigQuery 中有一个表,其中包含我收集的讨论各种股票的推文,我想根据每条推文文本中的单词对该表进行分段。

我有一个情绪字典(实际上它是一组表,其中每个表都列出了与感觉相关的单词。有一个表用于表示积极情绪的词,一个用于表示消极、不确定等的词),所以我想要do 类似于以下内容:

SELECT text AS bullish_tweets
FROM bigtweettable
WHERE text CONTAINS (SELECT words FROM table_x);

我只是不确定 BigQuery 是否允许这种查询,或者是否有某些功能可以。因为我在情绪字典中使用的这些表每个都有几百到几千行,很高兴知道这一点。

非常感谢。

【问题讨论】:

  • Tony,为了清楚起见,你能举一个 Tweet 表的架构示例吗?它的结构和 Twitter Stream API JSON 响应一样吗?
  • 嗨,Michael,它的结构是 Twitter API JSON 响应的一个子集。我的 BigQuery 数据集中有以下字段:created_at(created_at 字段的字符串表示形式)、source(字符串,“Twitter”或“StockTwits”,取决于哪个网络)、ticker(股票代码的字符串)和文本(推文正文)。

标签: google-bigquery


【解决方案1】:

除非你的推文已经用单词分隔,否则我想不出一种方法来做你要求的事情。如果您对推文进行预处理以拆分输入中的单词,则可以创建一个表示单词的重复字段。然后您可以进行查询:

SELECT text as bullish_tweets 
FROM bigtweettable
WHERE tweet_word IN (SELECT words from table_x)

bigtweettable 的架构类似于 字段:类型:模式 文本:字符串:可为空 tweet_word : string : 重复

如果 tweet_word 重复,您需要以 JSON 格式导入,因为 CSV 不支持重复值。或者,您可以预先扁平化并重复推文中每个单词的文本。

【讨论】:

  • 谢谢,乔丹。如果我明白你在说什么,听起来我最好构建一个 MapReduce 进程来执行你的建议,或者它可以查找我的情绪关键字(存储在数组中)并解析出推文方法。无论如何,这非常有帮助。非常感谢。
  • 这可行,但 bigquery 确实支持嵌套记录。您只需要在将推文添加到 bigquery 之前对其进行处理。
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多