Определение схемы таблицы программно с помощью nodejs - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь определить создание таблицы автоматически, используя nodejs "@ google-cloud / bigquery": "^ 3.0.0" следующим образом:

    const bigqueryClient = new BigQuery();
    schema = `driverId:string, passengerIds:(repeated string), pickedUp:(repeated string), createdat: integer, id:string, point:geography`;
    try {
            const table = await bigqueryClient.dataset(DATASET).table(tableName);
            const insertOptions: InsertRowsOptions = {
                autoCreate: true,
                schema: schema,
             }
            const response: InsertRowsResponse = await table.insert(JSON.parse(JSON.stringify(document)), insertOptions);
            console.log(`insert completed: ${JSON.stringify(response)}`);
        }
        catch(err) {
            // An API error or partial failure occurred.
            console.error(`failed to insert: ${JSON.stringify(err)}`);
        }

Дело в том, что если я использую примитивные типы, проблем не возникает, но я изо всех сил пытаюсь выяснить, как мне нужно правильно объявлять повторяемые типы, а также с типами записей. Кто-нибудь может дать мне несколько советов о том, как это сделать?

1 Ответ

1 голос
/ 23 мая 2019

Хорошо, наконец, выяснили, как это сделать, просто передайте схему в виде объекта, определенного так, как это делается в примере с Python, и он добьется цели, например:

 schema = [
    {
        "name": "driverId",
        "type": "STRING",
        "mode": "NULLABLE"
    },
    {
        "name": "passengerIds",
        "type": "STRING",
        "mode": "REPEATED"
    },
    {
        "name": "pickedUp",
        "type": "STRING",
        "mode": "REPEATED"
    },
    {
        "name": "createdat",
        "type": "integer",
        "mode": "NULLABLE"
    },
    {
        "name": "id",
        "type": "STRING",
        "mode": "NULLABLE"
    },
    {
        "name": "POINT",
        "type": "GEOGRAPHY",
        "mode": "NULLABLE"
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...