BigQuery位置函数

时间:2014-07-01 13:52:32

标签: google-bigquery

我试图使用位置功能,它似乎没有按预期工作:

POSITION(field) - 返回一组重复字段中字段的一个基于顺序的位置。

我希望该位置在加载的数据中给出原始位置,而我在结果集中得到位置(即 - 在where子句运行之后)。

有没有办法让原始数据中的位置加载?

比较下面的两个查询以查看问题。

SELECT  
  ngram,
  cell.value,
  position(cell.volume_count) as pos,
FROM [publicdata:samples.trigrams] 
where ngram contains ", says Blake"

SELECT  
  ngram,
  cell.value,
  position(cell.volume_count) as pos,
FROM [publicdata:samples.trigrams] 
where ngram contains ", says Blake" and integer(cell.value) % 5 = 0

1 个答案:

答案 0 :(得分:2)

问题是在where子句过滤嵌套值之后会对position函数进行求值。您可以使用嵌套选择来解决此问题:

select
  ngram,
  value,
  pos,
from (
  select  
    ngram,
    cell.value as value,
    position(cell.volume_count) as pos,
  from [publicdata:samples.trigrams] 
  where ngram contains ", says Blake"
)
where integer(cell.value) % 5 == 0