У меня есть данные, которые регулярно загружаются в базу данных BigQuery.Каждая строка представляет движение части инвентаря как часть выполнения заказа.
Информация о связанном заказе и "order_product" встроена в виде вложенных записей в строке.
Вот примернекоторые строки:
|----------|----------|----------|------------------|------------------------|---------------------|---------------------------------|
| move_id | quantity | order.id | order_product.id | order_product.quantity | order_product.price | item_reference_number |
|----------|----------|----------|------------------|------------------------|---------------------|---------------------------------|
| 1 | 1 | 1 | 1 | 1 | 5 | ABC |
|----------|----------|----------|------------------|------------------------|---------------------|---------------------------------|
| 2 | 1 | 1 | 2 | 1 | 7 | DEF |
|----------|----------|----------|------------------|------------------------|---------------------|---------------------------------|
| 3 | 1 | 1 | 2 | 1 | 7 | XYZ |
|----------|----------|----------|------------------|------------------------|---------------------|---------------------------------|
Как видите, в таблице показаны три движения акций.Все, что связано с Заказом 1.
Заказ 1 состоит из одного заказа_продукта 1 и одного заказа_продукта 2. Заказ_продукта 1 состоит из одного движения запаса, Move_id 1 для позиции ABC.
Заказ_продукта 2 состоит из двух запасовдвижения, move_id 2 для элемента DEF и move_id 3 для элемента XYZ.
Как мне написать запрос для перевода этих данных в таблицу с правильными вложенными / повторяющимися полями?Другими словами, я хотел бы, чтобы данные выглядели так:
|-----------|------------------|------------------------|---------------------|------------------------|---------------------|----------------------------------|
| order_id | order_product.id | order_product.quantity | order_product.price | stock_move.id | stock_move.quantity | stock_move.item_reference_number |
|-----------|------------------|------------------------|---------------------|------------------------|---------------------|----------------------------------|
| 1 | 1 | 1 | 5 | 1 | 1 | ABC |
| |------------------|------------------------|---------------------|------------------------|---------------------|----------------------------------|
| | 2 | 1 | 7 | 2 | 1 | DEF |
| | | | |------------------------|---------------------|----------------------------------|
| | | | | 3 | 1 | XYZ |
|-----------|------------------|------------------------|---------------------|------------------------|---------------------|----------------------------------|
Я читал этот пост , что, кажется, указывает на то, что ARRAY_AGG
может быть тем, что мне нужно, но я не могу понять, как правильно использовать его для своей проблемы.
Я думаю, что моя проблема в том, что я изо всех сил стараюсь уменьшить количество вложенных order_products до одной строки для каждой, заполняя правильную вложенную/ повторное движение запаса для каждого заказа.
Возможно ли вообще сделать то, что я спрашиваю?Я действительно ценю любую помощь, чтобы указать мне правильное направление.