ОБНОВЛЕНИЕ : в то время как навигация работает, проблема теперь использует это - доступ к полям в сгенерированной анонимной структуре (не может получить доступ к полям по имени) - так навигация работала, но я что-то упустил, так что результат на самом деле доступен?
Я ответил на свой вопрос, когда заполнял это, но все равно хотел поделиться этим (с ключевым моментом, о котором я не знал), был СМЕЩЕНИЕ. Я искал, как добиться «навигационных» возможностей при обработке массивов (смотреть вперед / назад «n» - похоже на Lag / Lead). В этом примере я создаю структуру со следующими и предыдущими значениями:
WITH items AS
(SELECT ["apples", "bananas", "pears", "grapes"] as list)
SELECT
list AS original_list,
ARRAY(SELECT (item, list[SAFE_OFFSET(pos+1)], list[SAFE_OFFSET(pos-1)]) FROM UNNEST(list) item WITH OFFSET pos) new_list
FROM
items
производит ...
[("apples","bananas",NULL), ("bananas","pears","apples"), ("pears", "grapes", "bananas"), ("grapes", NULL, "pears")]
Прекрасно работает - поэтому мой последний вопрос - как я могу использовать псевдоним имена полей структур, проверка BQ дает ошибку синтаксического анализа, возможно ли это? или это могут быть только _field_1 анонимные?
то есть AS X, AS Next, AS Previous
ARRAY(SELECT (item AS X, list[SAFE_OFFSET(pos+1)] AS Next, list[SAFE_OFFSET(pos-1)] AS Previous) FROM UNNEST(list)
'Ожидается ")" или "," но есть ключевое слово AS' - возможно ли это?
Одним интересным поворотом этого может быть несколько вычислений по сравнению с предыдущим, что если бы я хотел знать не только предыдущее, но и предыдущее значение 'MIN' относительно этой строки для всех предыдущих?
Спасибо!