如何使用 BigQueryHook 从另一个项目中读取数据

Posted

技术标签:

【中文标题】如何使用 BigQueryHook 从另一个项目中读取数据【英文标题】:how to use BigQueryHook to read data from another project 【发布时间】:2021-12-02 09:00:24 【问题描述】:

我们在 GCP 项目 A 中有气流作曲家实例,我们的 BQ 数据集存在于项目 B 中。当我们尝试从 BQ 读取数据时,出现错误。我们将 hook 写成 hook = BigQueryHook(bigquery_conn_id='bigquery_default', delegate_to=None, use_legacy_sql=False)

我们如何在这个 BigQueryHook 函数中传递项目名称 B

【问题讨论】:

【参考方案1】:

第一个 bigquery_conn_id 已弃用。你应该使用gcp_conn_id

项目 ID 是 GCP 连接的一个属性,您可以在 docs 中看到。如果您在连接级别上设置它,Airflow 会使用它。但是,如果需要,您可以在挂钩中覆盖它。

BigQueryHook(gcp_conn_id='bigquery_default', project_id='other_project')

您可以检查正在执行覆盖 here 的源代码。

【讨论】:

感谢@Elad,我尝试了这种方法,但出现错误“错误 - __init__() 得到了意外的关键字参数 'gcp_conn_id'” 听起来你正在运行旧版本的课程。您是从谷歌提供商或contrib 导入的吗?您正在运行哪个气流版本? 从airflow.contrib.hooks.bigquery_hook 导入BigQueryHook..我使用的是1.10.15+composer 这是过时的版本。您应该安装 google backport 提供程序并从中导入类。见***.com/a/68236614/14624409

以上是关于如何使用 BigQueryHook 从另一个项目中读取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个项目更新recyclerview项目中的数据?

如何从另一个新的 Spring Boot 项目调用一个 Spring Boot 项目中存在的 Spring Boot api

如何从另一个类 PyQT 向 QComboBox 添加项目?

如何从另一个项目列表中过滤一个项目列表?

如何使用标题中的两个参数和正文中的第二个参数从另一个 MVC 项目调用 Web API

如何从另一个 sbt 项目中引用外部 sbt 项目?