BQ Скалярный подзапрос произвел более одного элемента - PullRequest
0 голосов
/ 29 апреля 2020

Привет, когда я запускаю SQL Запрос У меня следующая проблема, почему?

SELECT 
_raw.created_at,
_raw.name,
(select item.quantity from unnest (_raw.line_items) as item) as quantity

FROM `Orders` --as tb2 --,unnest (_raw.line_items) as item

where DATE(_raw.created_at)  = "2020-04-27"

введите описание изображения здесь

1 Ответ

0 голосов
/ 29 апреля 2020

У меня следующий вопрос, почему?

Ниже подзапрос производит более одного элемента

select item.quantity from unnest (_raw.line_items) as item      

это очевидно - вывод здесь содержит столько элементов (строк), сколько элементов в массиве line_items

Итак, чтобы ваш запрос работал - вы можете просто добавить ARRAY перед ним - как в примере ниже

SELECT 
_raw.created_at,
_raw.name,
ARRAY(select item.quantity from unnest (_raw.line_items) as item) as quantity

FROM `Orders` --as tb2 --,unnest (_raw.line_items) as item

where DATE(_raw.created_at)  = "2020-04-27"   

ИЛИ убедитесь, что вы ограничили вывод подзапроса только одним элементом, добавив LIMIT 1, как в Пример ниже

SELECT 
_raw.created_at,
_raw.name,
(select item.quantity from unnest (_raw.line_items) as item LIMIT 1) as quantity

FROM `Orders` --as tb2 --,unnest (_raw.line_items) as item

where DATE(_raw.created_at)  = "2020-04-27"   

ИЛИ ... любые другие способы ограничить вывод этого подзапроса только одним элементом - который действительно зависит от вашего конкретного сценария использования c и того, что вы пытаетесь сделать достичь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...