【发布时间】:2019-05-10 02:42:20
【问题描述】:
我有一些数据定期加载到 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 相关。
Order 1 由一个 order_product 1 和一个 order_product 2 组成。Order_product 1 由一个库存移动组成,move_id 1 用于项目 ABC。
Order_product 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 |
|-----------|------------------|------------------------|---------------------|------------------------|---------------------|----------------------------------|
我一直在阅读this post,这似乎表明ARRAY_AGG 可能是我需要的,但我不知道如何正确使用它来解决我的问题。
我认为我的问题是我正在努力将嵌套的 order_products 减少到每一行,同时为每个 order_product 填充正确的嵌套/重复库存移动。
甚至可以按照我的要求做吗?我非常感谢任何帮助我指出正确的方向。
【问题讨论】:
标签: google-bigquery