Is er een manier om het schema van een BigQuery-tabel als JSON te exporteren?

Een BigQuery tabelheeft een schema dat kan worden bekeken in de web-UI, bijgewerktof gebruikt om laad gegevensmet de tool bqals een JSON-bestand. Ik kan echter geen manier vinden om dit schema van een bestaande tabel naar een JSON-bestand te dumpen (bij voorkeur vanaf de opdrachtregel). Is dat mogelijk?


Antwoord 1, autoriteit 100%

een manier om een ​​schema van een bestaande tabel naar een JSON-bestand te dumpen (bij voorkeur vanaf de opdrachtregel). Is dat mogelijk?

probeer hieronder

bq show bigquery-public-data:samples.wikipedia  

U kunt de vlag –format gebruiken om de uitvoer mooier te maken

–format: geen|json|prettyjson|csv|sparse|pretty:

Formaat voor uitvoer van opdrachten. Opties zijn onder meer: ​​

none:       ...
pretty:     formatted table output  
sparse:     simpler table output  
prettyjson: easy-to-read JSON format  
json:       maximally compact JSON  
csv:        csv format with header   

De eerste drie zijn bedoeld om leesbaar te zijn voor mensen, en de laatste drie zijn
om naar een ander programma te gaan. Als er geen formaat is geselecteerd, wordt er een gekozen
op basis van de opdrachtuitvoering.

Ik realiseerde me dat ik een gedeeltelijk antwoord heb gegeven :o)

Hieronder doet wat PO wilde

bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields' 

Antwoord 2, autoriteit 63%

U kunt de vlag --schema[1] toevoegen om informatie over tabelgegevens te vermijden.

bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]
bq show --schema --format=prettyjson mydataset.mytable > /tmp/myschema.json

[1] https://cloud.google.com/bigquery/docs /managing-table-schema’s


Antwoord 3, autoriteit 4%

Antwoord update

Sinds oktober 2020,
je kunt ook een SQL-query uitvoeren op INFORMATION_SCHEMA.COLUMNS, wat een soort introspectieve functionaliteit is.

SELECT *
FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS

en nest de gegevens met behulp van een aggregatiefunctie zoals

SELECT table_name, ARRAY_AGG(STRUCT(column_name, data_type)) as columns
FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS
GROUP BY table_name

Het zijn ook interessante metadata in INFORMATION_SCHEMA.VIEWSals je ook de broncode van je views nodig hebt.

Klik vervolgens op resultaten opslaan / JSON vanuit de BigQuery-interface, of plaats deze in uw geval in de bq query-opdrachtregel.

Bron: BigQuery-release-opmerkingen


Antwoord 4, autoriteit 3%

U kunt de REST API-aanroep gebruiken om het BigQuery-tabelschema als JSON op te halen. Documentatielink: https://cloud.google.com/bigquery /docs/reference/rest/v2/tables/get

curl 'https://bigquery.googleapis.com/bigquery/v2/projects/project-name/datasets/dataset-name/tables/table-name' \
     --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
     --header 'Accept: application/json' \
     --compressed

Other episodes