BigQuery中表的结构

时间:2017-04-19 10:20:52

标签: google-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" }] }] } 的表格。

android:src

任何人都可以帮助我在BigQuery上使用这个JSON的结构吗?以及如何使用SQL查询检索数据?

1 个答案:

答案 0 :(得分:2)

  

我想知道我桌子的结构是什么?

在下面尝试BigQuery Standard 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

或者如果要查看Web UI:

enter image description here

  

我如何阅读它的价值?

这实际上取决于您想要“读取”这些数据的具体内容和方式!

例如,如果您想计算每次销售的总折扣 - 它可以如下所示

#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上受到欢迎