Closed6
PartialFailureError at Table._insert
Cloud FunctionsでBigQueryにInsertするだけの処理でエラーが発生する
⚠ functions: PartialFailureError
at Table._insert (xxx/node_modules/@google-cloud/bigquery/build/src/table.js:1717:19)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Table._insertWithRetry ((xxx/node_modules/@google-cloud/bigquery/build/src/table.js:1654:24)
at async Table._insertAndCreateTable ((xxx/node_modules/@google-cloud/bigquery/build/src/table.js:1616:20)
transaction.ts
export async function transaction(data: string) {
const row = [{ insert_at: new Date(), data: data }]
await bigquery.dataset(_dataset).table(_table).insert(row)
}
データセット名、テーブル名、スキーマが間違っているのではないかということだが、再度確認しても間違い無さそうで謎だ。
追加するデータの型が誤っていることが原因だった。
このようなエラーハンドリングを書くとより詳細なログが得られる。
try {
await table.insert([row], {
skipInvalidRows: false,
ignoreUnknownValues: false,
createInsertId: false,
raw: true,
});
} catch (e) {
logger.error(e);
if (e.name === 'PartialFailureError') {
for (const err of (e.errors as { errors: { message: string, reason: string }[], row: any }[])) {
logger.error(err);
}
} else {
logger.error(e);
}
InsertRowsOptions
export declare type InsertRowsOptions = bigquery.ITableDataInsertAllRequest & {
createInsertId?: boolean;
partialRetries?: number;
raw?: boolean;
schema?: string | {};
};
普通に型が誤っていた
"message":"Array specified for non-repeated field: entitlement_ids.","reason":"invalid"}
このスクラップは2021/10/27にクローズされました