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呼び出しまたは他のメソッドを使用してこれを取得する方法はありますか?
ここ 、schema
の有効期限が切れています。
別の方法は、クライアントインスタンスとテーブルインスタンスを取得した後、次のようなことを行うことです。
import io
f = io.StringIO("")
client.schema_to_json(table.schema, f)
print(f.getvalue())