【发布时间】:2019-11-25 10:33:42
【问题描述】:
我不完全知道该标题是什么,因为这是一个复杂的情况。我目前正在开展一个项目,使用 Erply 的 API 从一家公司的 Erply 数据库中检索财务报表(发票),然后将该数据传输到另一个数据库,以使用 Google Data Studio 对其进行一些简单的分析。我目前正在运行一个谷歌云功能,它可以检索数据并将其存储在 Google BigQuery 中。
主要问题:
BigQuery 只能追加,我需要至少每天更新 BigQuery 中的数据,并且只包含新条目。
Erply API 只允许一个人通过单个 API 调用检索(最多)100 张发票,然后可以检索接下来的 100 张,但无法知道总共有多少张发票(因此,何时停止呼叫)或自上次检索以来哪些发票是新的。 (我不希望在这个线程上收到解决方案,但只是想我会提供所有信息)
我使用了 BigQuery 的自动模式生成器,给它一个包含大约 20 张发票的 json 文件,但是,我从 Erply 提取的数据似乎并不总是严格遵守这个模式(它们都有相同的完全相同的键,但并不总是填充正确的值格式)因此我在尝试将数据推送到 BigQuery 时遇到部分错误失败(由于许多发票不完全符合架构)。 下面在代码块中给出的示例。我无法弄清楚这个错误消息,并希望看到对每次失败的更深入的解释,以尝试缩小不同的键值对格式并导致错误。
最后,我需要使用 BigQuery,因为它直接连接到 Google Data Studio,从而实现了非常方便且易于使用的设置(一旦数据实际上在 BigQuery 中)。我想知道的是,对于上述问题,我应该将数据直接导入 BigQuery 吗?还是应该使用另一个 GCP 存储选项并将其链接到 BigQuery?
对于个别问题的任何答案也将不胜感激,如果您需要更多信息,请告诉我。
{ PartialFailureError
at request (/srv/node_modules/@google-cloud/bigquery/build/src/table.js:1550:23)
at Util.handleResp (/srv/node_modules/@google-cloud/bigquery/node_modules/@google-cloud/common/build/src/util.js:142:9)
at retryRequest (/srv/node_modules/@google-cloud/bigquery/node_modules/@google-cloud/common/build/src/util.js:417:22)
at onResponse (/srv/node_modules/retry-request/index.js:206:7)
at /srv/node_modules/teeny-request/build/src/index.js:208:13
at <anonymous>
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
errors:
[ { errors: [Array], row: [Object] },
{ errors: [Array], row: [Object] },
{ errors: [Array], row: [Object] },
{ errors: [Array], row: [Object] } ],
name: 'PartialFailureError',
response:
{ kind: 'bigquery#tableDataInsertAllResponse',
insertErrors:
[ [Object],
[Object],
[Object],
[Object] ] },
message: '' }
【问题讨论】:
标签: node.js google-cloud-platform google-bigquery google-data-studio