Как создать службу передачи данных BigQuery, используя Python - PullRequest
2 голосов
/ 20 января 2020

Я попытался создать службу передачи данных, используя bigquery_datatransfer. Я использовал следующую библиотеку python,

pip install --upgrade google-cloud-bigquery-datatransfer

Использовал метод

create_transfer_config (parent, Transfer_config)

Я определил значения Transfer_config для data_source_id: amazon_s3

transfer_config = {
    "destination_dataset_id": "My Dataset",
    "display_name": "test_bqdts",
    "data_source_id": "amazon_s3",
    "params": {
        "destination_table_name_template":"destination_table_name",
        "data_path": <data_path>,
        "access_key_id": args.access_key_id,
        "secret_access_key": args.secret_access_key,
        "file_format": <>
    },
    "schedule": "every 10 minutes"
}

Но во время работы скрипта я получая следующую ошибку,

ValueError: Protocol message Struct has no "destination_table_name_template" field.

Поля, указанные внутри параметров, не распознаются. Кроме того, я не смог найти, какие поля должны быть определены внутри «params» struct

Какие поля должны быть определены внутри «params» файла Transfer_config для создания данных Передача работы успешно?

1 Ответ

0 голосов
/ 20 января 2020

Как вы можете видеть в документации , вам следует попробовать поместить свой код в функцию google.protobuf.json_format.ParseDict().

transfer_config = google.protobuf.json_format.ParseDict(
    {
        "destination_dataset_id": dataset_id,
        "display_name": "Your Scheduled Query Name",
        "data_source_id": "scheduled_query",
        "params": {
            "query": query_string,
            "destination_table_name_template": "your_table_{run_date}",
            "write_disposition": "WRITE_TRUNCATE",
            "partitioning_field": "",
        },
        "schedule": "every 24 hours",
    },
    bigquery_datatransfer_v1.types.TransferConfig(),
)

Пожалуйста, дайте мне знать, если это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...