如何在 bigquery 的重复结构中查找最后一项

How to find last item in a repeated structure in bigquery

我有一个嵌套的重复结构,重复结构的长度是可变的。例如,它可能是一个具有重复结构的人对象,该结构包含该人居住过的城市。我想找到该列表中的最后一项,以查找当前居住的城市人。有没有简单的方法可以做到为此,我尝试查看 jsonpath 函数,但我不确定如何将它与 "within" 一起使用。有什么帮助吗?

1) 您可以使用LAST and WITHIN

SELECT  
  FIRST(cell.value) within record ,
  LAST(cell.value) within record 
FROM [publicdata:samples.trigrams] 
where ngram = "! ! That"

2) 或者如果你想要更高级的东西,你可以使用 POSITION

POSITION(field) - Returns 字段在一组重复字段中的基于一个的连续位置。

您可以查看三元组中的示例(单击“详细信息”以查看展开的架构) https://bigquery.cloud.google.com/table/publicdata:samples.trigrams?pli=1

当您 运行 位置时,您将获得该字段的顺序。

SELECT  
  ngram,
  cell.value,
  position(cell.volume_count) as pos,
FROM [publicdata:samples.trigrams] 
where ngram = "! ! That"

既然你有位置,你可以查询最后一个。