google-bigquery - 如何跨两个项目使用联合查询保存视图?
问题描述
我正在寻找在两个项目之间使用联合查询(来自 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上的文档在这里没有提到任何限制。
有没有办法解决这个问题,以便我可以使用来自一个项目的外部连接和来自另一个项目的数据集来保存视图?
解决方案
您的 BigQuery 表位于 中US
,您的 MySQL 数据源位于us-east1
. BigQuery 自动选择在您的 BigQuery 表的位置(即 in US
)运行查询,但是,您的 Cloud MySQL 位于us-east1
其中,这就是您的查询失败的原因。因此,BigQuery 表和 Cloud SQL 实例必须位于同一位置,此查询才能成功。
这种情况的解决方案是按照本文档中详细说明的步骤手动将 BigQuery 数据集移动到与 Cloud SQL 实例相同的位置。但是,us-east1
目前不支持复制数据集。因此,我建议您在文档中提到的位置之一创建一个新连接。
我希望您发现上述信息有用。
推荐阅读
- .net - JWT 过期行为
- javascript - 为什么当我在同一个目录或父目录中时,“require”的行为会有所不同?
- apache-spark - Spark SQL 窗口超过两个指定时间边界之间的间隔 - 3 小时到 2 小时前
- cassandra - NiFi:将流文件均匀地路由到不同的处理器
- java - 有没有办法通过批处理设置库路径?
- grafana - 使用 PromQL 查询多个应用程序的正常运行时间聚合
- ios - 我获取的数据只显示一个数据而不是显示两个(Firebase,Swift)
- aframe - A-Frame v.0.9.x 动画暂停相机
- ios - iOS - 更改 UICollectionView 布局以填充行而不是列
- python - 如何修复 Python 中的“无效语法”错误?