2017-04-19 73 views
0

我想創建一個低於JSON的表格。BigQuery中表格的結構

{ 
    "store_nbr": "1234", 
    "sls_dt": "2014-01-01 00:00:00", 
    "Items": [{ 
     "sku": "3456", 
     "sls_amt": "9.99", 
     "discounts": [{ 
      "disc_nbr": "1", 
      "disc_amt": "0.99" 
     }, { 
      "disc_nbr": "2", 
      "disc_amt": "1.00" 
     }] 
    }] 
} 

任何人都可以幫助我在BigQuery上構建這個JSON結構嗎?以及如何使用SQL查詢檢索數據?

+0

目前尚不清楚究竟是什麼。你能否澄清一下 - 你是否已經在表中其中一個字段中有這樣的json作爲字符串值,並且你需要將這個值解析/提取到相應的鍵/值並將其輸出到另一個表中?或者是其他東西。請詳細說明你的情況 –

+0

@MikhailBerlyant截至目前我沒有表格,我想用這個JSON創建表格,現在我想知道我的表格的結構以及我如何讀取它的值? –

回答

2

我想知道我的桌子的結構是什麼?下面

嘗試使用BigQuery的標準SQL

#standardSQL 
WITH yourTable AS (
    SELECT 
     1234 AS store_nbr, 
     DATE('2014-01-01 00:00:00') AS sls_dt, 
     [STRUCT(
      3456 AS sku, 
      9.99 AS sls_amt, 
      [STRUCT<disc_nbr INT64, disc_amt FLOAT64> 
       (1, 0.99), 
       (2, 1.00) 
      ] AS discounts 
     )] AS items 
) 
SELECT * 
FROM yourTable 

表,這裏的結構是:

enter image description here

,或者看看在網絡用戶界面:

enter image description here

我如何讀取它的值?

這實際上取決於您究竟想要什麼以及如何「讀取」這些數據!

例如,如果你想calc下每每個銷售總折扣 - 它看起來如下

#standardSQL 
WITH yourTable AS (
    SELECT 
    1234 AS store_nbr, 
    DATE('2014-01-01 00:00:00') AS sls_dt, 
    [STRUCT(
     3456 AS sku, 9.99 AS sls_amt, [STRUCT<disc_nbr INT64, disc_amt FLOAT64>(1, 0.99), (2, 1.00)] AS discounts 
    )] AS items 
) 
SELECT 
    t.*, 
    (SELECT SUM(disc.disc_amt) FROM UNNEST(item.discounts) AS disc) AS total_discount 
FROM yourTable AS t, UNNEST(items) AS item 

我建議你先用表的創建完成你的「鍛鍊」,實際上得到的數據進去,所以比你可以問關於你想建立的查詢的具體問題。
但是,這應該是一個新的職位,所以你不要混合在一起作爲一個一體化的問題,因爲這種類型的問題通常不受歡迎在這裏所以SO