私はGoogle BigQueryのPythonクライアントで作業しています。 私はテーブルの作成/エクスポートを自動化するプログラムを書いています。python - 文字列をフィールドオブジェクトに割り当てる
すべてうまくいきますが、少し問題があります。ユーザーの入力として表のスキーマを取りたいと思います。
は、ここでテーブルスキーマが現在割り当てられている方法は次のとおりです。これは、コード内でハードコードされます
table.schema = (
bigquery.SchemaField('Name', 'STRING'),
bigquery.SchemaField('Gender', 'STRING'),
bigquery.SchemaField('Frequency', 'INTEGER')
)
。
ユーザー入力を処理し、上記の形式に変換するコードを記述しました。私はというエラーを取得する今
bigquery.SchemaField(Name, STRING),bigquery.SchemaField(Gender, STRING),bigquery.SchemaField(Frequency, INTEGER)
私はテーブルのスキーマにこの文字列を代入しようとすると、
table.schema = (bq_schema)
: - bq_schema
- のように見える
Schema items must be fields
したがって、ユーザーの入力に応じてテーブルスキーマを動的にするにはどうすればよいですか。
EDIT:要求されたとして、文字列にユーザー入力を変換するため、ここでのコード:
s_raw = raw_input('\n\nEnter the schema for the table in the following format- fieldName:TYPE, anotherField:TYPE\n')
s = s_raw.split(',')
schema = []
for obj in s:
temp = obj.split(':')
schema.append(temp[0])
schema.append(temp[1])
bq_schema = ''
for i in range(0, len(schema), 2):
bq_schema+=('bigquery.SchemaField(\'{}\', \'{}\'),'.format(schema[i], schema[i+1]))
あなたのコードの戻り値が実際に文字列にすることはできません。スキーマの「setterプロパティ」はhttps://github.com/GoogleCloudPlatform/google-cloud-python/blob/master/bigquery/google/cloud/bigquery/table.py#L106で定義されているため、すべてのフィールドは 'SchemaField'のインスタンスなので、' SchemaField'以外の値は返しません。あなたのシステムにユーザーが入力したものの例がありますか?この入力を以前に言及した文字列に変換する方法を教えてください。 –
助けてくれてありがとう! 私はOPにコードを追加しました – noobcoder