2017-04-19 76 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