簡體   English   中英

BigQuery 查詢不適用於 UNNEST()

[英]BigQuery query doesn't work with UNNEST()

我正在嘗試通過 BigQuery 搜索 StackOverflow 數據,方法是讓此查詢與答案中的字符串模式相匹配,並通過標簽過濾相關問題的答案。

WITH question_answers_join AS (
  SELECT *
  FROM (
    SELECT id, creation_date, title
      , (SELECT AS STRUCT body b
         FROM `bigquery-public-data.stackoverflow.posts_answers` 
         WHERE a.id=parent_id
      ) answers
      , SPLIT(tags, '|') tags
    FROM `bigquery-public-data.stackoverflow.posts_questions` a
  )
)SELECT * 
FROM question_answers_join
WHERE 'google-bigquery' IN UNNEST(tags)
AND REGEXP_CONTAINS(answers.b, r"hello")
ORDER BY RAND()
LIMIT 100

但是,我收到此錯誤:

標量子查詢產生了不止一個元素

它指的是什么? 我怎樣才能解決這個問題?

以下是 BigQuery 標准 SQL

#standardSQL
WITH question_answers_join AS (
  SELECT *
  FROM (
    SELECT id, creation_date, title
      , ARRAY(SELECT body                             /* this line was the reason for error */
         FROM `bigquery-public-data.stackoverflow.posts_answers` 
         WHERE a.id=parent_id
      ) answers
      , SPLIT(tags, '|') tags
    FROM `bigquery-public-data.stackoverflow.posts_questions` a
  )
)
SELECT *
FROM question_answers_join 
WHERE 'google-bigquery' IN UNNEST(tags)
AND EXISTS (
  SELECT 1 
  FROM UNNEST(answers) answer 
  WHERE REGEXP_CONTAINS(answer, r"hello")
)
ORDER BY RAND()
LIMIT 100    

我認為,只需將上面的內容與您的原始查詢進行比較就可以很容易地看到差異(提示:只有兩個)。 第一個區別是您看到的錯誤的實際原因。 第二個區別是反映第一個引入的變化

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM