У меня есть вложенная повторяющаяся структура, повторяющаяся структура переменной длины. Например, это может быть объект человека с повторяющейся структурой, в которой хранятся города, в которых проживал человек. Я хотел бы найти последний элемент в этом списке, чтобы найти, что текущий город живет. Есть ли простой способ сделать это, я попытался оглядеть функции jsonpath, но я не уверен, как использовать его с «внутри». Любая помощь, пожалуйста?Как найти последний элемент в повторяющейся структуре в bigquery
2
A
ответ
7
1) Вы можете использовать LAST и WITHIN
SELECT
FIRST(cell.value) within record ,
LAST(cell.value) within record
FROM [publicdata:samples.trigrams]
where ngram = "! ! That"
2), или если вы хотите что-то более продвинутые вы можете использовать POSITION
POSITION(field)
- возвращает один основе, последовательное положение поле внутри набора повторяющихся полей.
Вы можете проверить образцы из триграмм (нажмите на детали, чтобы увидеть unflatten схемы) 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"
Теперь, когда вы имеете позицию, вы можете запросить последнего.
Это замечательно - возможно ли иметь первый элемент и последний элемент в одном предложении SELECT? – opensourcegeek
да, вы можете иметь это, или вы можете использовать подзапрос каждый раз – Pentium10
Вы имеете в виду подзапрос для fetching первого и другого подзапроса для извлечения последних элементов? – opensourcegeek