2017-04-19 6 views
0

以下のテーブルを作成したいと思いますJSONBigQueryのテーブルの構造

{ 
    "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

これは正確には何かが明確ではありません。あなたは明らかにしてください - フィールドの1つが文字列値のようなjsonを持ち、この値を解析してそれぞれのキー/値に抽出して別のテーブルに出力する必要があるテーブルを既に持っていますか?または、他の何か。あなたのケースを少し具体化してください。 –

+0

@MikhailBerlyant今のところ私はテーブルがありません。私はこのJSONを使ってテーブルを作成したいのですが、テーブルの構造とその値を読み取る方法が不思議です。 –

答えて

2

私のテーブルの構造は何ですか?

#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 

ここでは、テーブルの構造のBigQuery標準SQLについては、以下を試してみてくださいすることです:

または

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 

以下のようなルックスは、私は、あなたが最初のテーブルの作成にあなたの「運動」を完成させ、実際にデータを取得するためにお勧めすることができますあなたが構築したいクエリに関する具体的な質問をすることができます。
これは新しい投稿である必要がありますので、ここでは歓迎されない質問など、オールインワンの質問としてすべて一緒にミックスしないでください。

関連する問題