【问题标题】:Refining an BigQuery table with external API lookup使用外部 API 查找优化 BigQuery 表
【发布时间】:2018-09-21 10:33:10
【问题描述】:

我在 Google BigQuery 中有一个表格。 该表包含地址(丹麦语) - 例如。街道名称:“Bakkevej”,门牌号:“23”,邮编:“4305”。

由于我需要将数据与另一个包含通用(丹麦)地址 ID 的表(称为 DAWAID)进行匹配,因此我需要再次通过 API 查找地址,并将地址的 DAWAID 添加到名为 DAWAID 的行中的单独字段中。

API 位于:https://dawa.aws.dk/adresser 并以 JSON 格式返回数据 - 但可能以 jsonp 或 ndjson 格式返回。

查找提到的地址如下所示:https://dawa.aws.dk/adresser?vejnavn=Bakkevej&husnr=23&postnr=4305

所以 - 问题是这样的。我将如何绕过 API 查找表中的所有行并保存返回的 DAWAID(JSON 中的“id”)。

我认为它可以通过 bq 命令行和 curl 的组合来完成 - 但这有点远。

在 Google Cloud 中有什么方法可以做到这一点?

【问题讨论】:

  • 你有多少行?你知道 API 是否有速率限制吗?
  • 大约有 500.000 行 - API 一次限制为 10 个并发请求 - 但据我所知没有其他限制

标签: curl google-cloud-platform google-bigquery google-cloud-functions


【解决方案1】:

BigQuery 不包含对数据进行外部查找的方法。

相反,我建议使用可以遍历整个数据库的批处理系统,查找每一行,然后将其保存回新表。

GCP 包括一个能够做到这一点的系统,Dataflow。在 Dataflow 中,您基本上需要三个组件的管道:

  1. 用于从当前表中获取行的 BigQuery 源
  2. 您必须编写一个转换来获取 DAWAID 并将其包含在每一行中
  3. BigQuery Sink 将带有 DAWID 的行写入新表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多