簡體   English   中英

在BigQuery中使用JSON函數查詢訂單行項目

[英]Querying Line Items of Order with JSON Functions in BigQuery

在過去的 2 個小時里,我一直在用 BigQuery 中所有可用的 JSON_... 函數來敲打我的腦袋。 我在這里閱讀了很多問題,但無論我為什么嘗試,我都沒有成功地從下面的 JSON 中提取“數量”。

這是我存儲在 BQ 列中的 JSON:

                {
                    "lines": [
                        {
                            "id": "70223039-83d6-463d-a482-7ce4d50bf0fc",
                            "charges": [
                                {
                                    "type": "price",
                                    "amount": 50.0
                                },
                                {
                                    "type": "discount",
                                    "amount": -40.00
                                }
                            ]
                        },

                             {
                            "id": "70223039-83d6-463d-a482-7ce4d50bf0fc",
                            "charges": [
                                {
                                    "type": "price",
                                    "amount": 20.00
                                },
                                {
                                    "type": "discount",
                                    "amount": 0.00
                                }
                            ]
                        }
                    ]
                } 

想象一下上面是一個包含多個項目的訂單。

我正在嘗試獲取所有金額的總和 => 50-40+20+0。 結果需要是30 = 訂單總價。

是否可以提取所有金額值,然后在沒有任何自定義 JS 函數的情況下僅通過 SQL 將它們相加? 我想求和是比較容易的部分——將數量放入數組是這里的挑戰。

在下面使用

select (
    select sum(cast(json_value(charge, '$.amount') as float64))
    from unnest(json_extract_array(order_as_json, '$.lines')) line,
    unnest(json_extract_array(line, '$.charges')) charge
  ) total
from your_table          

如果應用於 y 中的示例數據,我們的問題 - output 是

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM