web-dev-qa-db-ja.com

Python BigQueryAPI-テーブルスキーマを取得

Bigqueryテーブルからスキーマをフェッチしようとしています。次のようなサンプルコードが与えられます

_from google.cloud import bigquery
from google.cloud import storage

client =  bigquery.Client.from_service_account_json('service_account.json')

def test_extract_schema(client): 
    project = 'bigquery-public-data'
    dataset_id = 'samples'
    table_id = 'shakespeare'

    dataset_ref = client.dataset(dataset_id, project=project)
    table_ref = dataset_ref.table(table_id)
    table = client.get_table(table_ref)  # API Request

    # View table properties
    print(table.schema)

if __name__ == '__main__':
    test_extract_schema(client)
_

これは次のような戻り値です。

[SchemaField('Word', 'STRING', 'REQUIRED', 'A single unique Word (where whitespace is the delimiter) extracted from a corpus.', ()), SchemaField('Word_count', 'INTEGER', 'REQUIRED', 'The number of times this Word appears in this corpus.', ()), SchemaField('corpus', 'STRING', 'REQUIRED', 'The work from which this Word was extracted.', ()), SchemaField('corpus_date', 'INTEGER', 'REQUIRED', 'The year in which this corpus was published.', ())]

次のような形式でのみスキーマをキャプチャしようとしている場合

_'Word' 'STRING','Word_count' INTEGER'
_

API呼び出しまたは他のメソッドを使用してこれを取得する方法はありますか?

5
Sandeep Singh

ここschemaの有効期限が切れています。

1
GH1995

別の方法は、クライアントインスタンスとテーブルインスタンスを取得した後、次のようなことを行うことです。

import io
f = io.StringIO("")
client.schema_to_json(table.schema, f)
print(f.getvalue())
0
Jose B