2016-04-08 16 views
1

İç içe geçmiş ve tekrarlanan alanlar içeren tabloyu sorgulamam gerekiyor, bq komut satırını kullanarak sonuç, orijinal biçim olarak sonuç almam gerektiğinde düzleştirilmiş sonuçlar ver.BQ komut satırı "--noflatten_results" seçeneğinin yuvalanmış alanlar için nasıl kullanılacağı

enter image description here

orignal biçimi

{ 
    "fields": [ 
     { 
     "fields": [ 
      { 
      "mode": "REQUIRED", 
      "name": "version", 
      "type": "STRING" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "hash", 
      "type": "STRING" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "header", 
      "type": "STRING" 
      }, 
      { 
      "name": "organization", 
      "type": "STRING" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "date", 
      "type": "TIMESTAMP" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "encoding", 
      "type": "STRING" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "message_type", 
      "type": "STRING" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "receiver_code", 
      "type": "STRING" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "sender_code", 
      "type": "INTEGER" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "segment_separator", 
      "type": "STRING" 
      }, 
      { 
      "fields": [ 
       { 
       "fields": [ 
        { 
        "name": "name", 
        "type": "STRING" 
        }, 
        { 
        "name": "description", 
        "type": "STRING" 
        }, 
        { 
        "name": "value", 
        "type": "STRING" 
        }, 
        { 
        "fields": [ 
         { 
         "name": "name", 
         "type": "STRING" 
         }, 
         { 
         "name": "description", 
         "type": "STRING" 
         }, 
         { 
         "name": "value", 
         "type": "STRING" 
         } 
        ], 
        "mode": "REPEATED", 
        "name": "composite_elements", 
        "type": "RECORD" 
        } 
       ], 
       "mode": "REPEATED", 
       "name": "elements", 
       "type": "RECORD" 
       }, 
       { 
       "name": "description", 
       "type": "STRING" 
       }, 
       { 
       "mode": "REQUIRED", 
       "name": "name", 
       "type": "STRING" 
       } 
      ], 
      "mode": "REPEATED", 
      "name": "segments", 
      "type": "RECORD" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "message_identifier", 
      "type": "INTEGER" 
      }, 
      { 
      "mode": "REQUIRED", 
      "name": "element_separator", 
      "type": "STRING" 
      }, 
      { 
      "name": "composite_element_separator", 
      "type": "STRING" 
      } 
     ], 
     "mode": "REPEATED", 
     "name": "messages", 
     "type": "RECORD" 
     }, 
     { 
     "mode": "REQUIRED", 
     "name": "syntax", 
     "type": "STRING" 
     }, 
     { 
     "mode": "REQUIRED", 
     "name": "encoding", 
     "type": "STRING" 
     }, 
     { 
     "mode": "REQUIRED", 
     "name": "file_name", 
     "type": "STRING" 
     }, 
     { 
     "mode": "REQUIRED", 
     "name": "size", 
     "type": "INTEGER" 
     } 
    ] 
    } 

gibi bakıyor Yani yuvalama gösterimi ile (lokal) verilerini verme?

[DÜZENLE]

Google'a İhracat iç içe olduğu gösterimi

O ardından tablonun aktardığınız Google Depolama ayıklamak ve nihayet dosya indirmek için var yuvalama temsilini dışa aktarmanın tek çözüm gibi görünüyor bu. Eğer -noflatten_results kullanmak ayrıca --allow_large_results ve --destination_table kullanmak zorunda zaman

bq query --destination_table=DEV.EDI_DATA_EXPORT --replace \ 
--allow_large_results --noflatten_results \ 
"select * from DEV.EDI_DATA where syntax='EDIFACT' " \ 
&& bq extract --destination_format=NEWLINE_DELIMITED_JSON DEV.EDI_DATA_EXPORT gs://mybucket/data.json \ 
&& gsutil cp gs://mybucket/data.json . 

Bana şaşırtıcı ...

cevap

0

. Bu, düzleştirilmemiş sonuçları yeni bir tabloda saklar.

+0

Json'a yerel olarak sahip olmam gerekiyor (web uygulaması) :) –

+0

sonuçları yeni bir tabloya kaydettikten sonra, JSON dışa aktarabilirsiniz :) –

+0

OP'imi güncelleyeceğim, cevabımı yorumlamaktan çekinmeyin. –

İlgili konular