BigQuery - ARRAY_ARG 和 UNNEST 在需要一个元素时在同一通道上
BigQuery - ARRAY_ARG and UNNEST on the same pass when one element is needed
我想知道在 BigQuery 中取消嵌套使用 ARRAY_AGG 生成的数组的最快方法是什么,假设我只想在数组的分区上取一个元素。让我试着更好地解释一下
假设我有这个:
with (
select a, ARRAY_AGG(struct(time, value) order by time) as b
group by a
) tbl
假设我只想选择数组的一个元素,特别是数组的 last 元素(具有最近时间的元素,因为数组是有序的).即,以此结尾(其中 time 和 value 假定数组最后一个元素的值,正如我上面所说的):
a | time | value
--+------+------
当然,我可以 unnest(b) 并创建一个分区,但这意味着要额外传递到 table。
有没有办法一次性完成?
尝试 offset
:
ARRAY_AGG(struct(time, value) order by time desc limit 1)[offset(0)].*
我想知道在 BigQuery 中取消嵌套使用 ARRAY_AGG 生成的数组的最快方法是什么,假设我只想在数组的分区上取一个元素。让我试着更好地解释一下
假设我有这个:
with (
select a, ARRAY_AGG(struct(time, value) order by time) as b
group by a
) tbl
假设我只想选择数组的一个元素,特别是数组的 last 元素(具有最近时间的元素,因为数组是有序的).即,以此结尾(其中 time 和 value 假定数组最后一个元素的值,正如我上面所说的):
a | time | value
--+------+------
当然,我可以 unnest(b) 并创建一个分区,但这意味着要额外传递到 table。
有没有办法一次性完成?
尝试 offset
:
ARRAY_AGG(struct(time, value) order by time desc limit 1)[offset(0)].*