首页 > 解决方案 > 如何跨两个项目使用联合查询保存视图?

问题描述

我正在寻找在两个项目之间使用联合查询(来自 MySQL Cloud SQL 连接)的视图。我收到两个不同的错误(取决于我尝试保存的项目)。

如果我尝试保存在包含数据集的项目中,则会出现错误:

未找到:连接我的连接名称

如果我尝试保存在包含连接的项目中,我会收到错误:

未找到:数据集 my-project:my_dataset

我跨项目的示例查询如下所示:

SELECT
  bq.uuid,
  sql.item_id,
  sql.title
FROM
  `project_1.my_dataset.psa_v2_202005` AS bq
LEFT OUTER JOIN
  EXTERNAL_QUERY( 'project_2.us-east1.my-connection-name',
    '''SELECT item_id, title
  FROM items''') AS sql
ON
  bq.looks_info.query_item.item_id = sql.item_id

https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries#known_issues_and_limitations上的文档在这里没有提到任何限制。

有没有办法解决这个问题,以便我可以使用来自一个项目的外部连接和来自另一个项目的数据集来保存视图?

标签: google-bigquery

解决方案


您的 BigQuery 表位于 中US,您的 MySQL 数据源位于us-east1. BigQuery 自动选择在您的 BigQuery 表的位置(即 in US)运行查询,但是,您的 Cloud MySQL 位于us-east1其中,这就是您的查询失败的原因。因此,BigQuery 表和 Cloud SQL 实例必须位于同一位置,此查询才能成功。

这种情况的解决方案是按照本文档中详细说明的步骤手动将 BigQuery 数据集移动到与 Cloud SQL 实例相同的位置。但是,us-east1目前不支持复制数据集。因此,我建议您在文档中提到的位置之一创建一个新连接。

我希望您发现上述信息有用。


推荐阅读