我试图使用位置功能,它似乎没有按预期工作:
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
答案 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