私は同じ問題を抱えていました。私の場合は、すでにスキンを自動的に生成してjqusonをbigqueryにロードしました。
は、だから私は、自動生成されたschemawithにコマンドを取得することができた:
bq show --format prettyjson my-gcp-project:my-bq-table |jq .schema > my-bq-table.json
スキーマは、このスニペットでbigquery.TableSchema
に変換することができ
from apache_beam.io.gcp.internal.clients import bigquery
def _get_field_schema(**kwargs):
field_schema = bigquery.TableFieldSchema()
field_schema.name = kwargs['name']
field_schema.type = kwargs.get('type', 'STRING')
field_schema.mode = kwargs.get('mode', 'NULLABLE')
fields = kwargs.get('fields')
if fields:
for field in fields:
field_schema.fields.append(_get_field_schema(**field))
return field_schema
def _inject_fields(fields, table_schema):
for field in fields:
table_schema.fields.append(_get_field_schema(**field))
def parse_bq_json_schema(schema):
table_schema = bigquery.TableSchema()
_inject_fields(schema['fields'], table_schema)
return table_schema
それはのBigQuery JSONスキーマで動作しますもしあなたが私のような怠け者であるなら、デフォルトでヌル文字列であるフィールドに満足すれば、type
とmode
を指定するのを避けることができます。
ありがとうございます!私はちょうどPython SDKがアルファであることに気付いたので、それが少し成熟するまで、さらなる問題を[github](https://github.com/GoogleCloudPlatform/DataflowPythonSDK)に指示します。 – ivarg