首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将bigquery表与google表合并为联邦查询

将bigquery表与google表合并为联邦查询
EN

Stack Overflow用户
提问于 2021-09-27 01:26:17
回答 1查看 247关注 0票数 0

我正在尝试将bigquery表(target)与表(源)与联邦查询合并。但是,bigquery似乎不会接受"using“子句中的联邦查询。

代码语言:javascript
复制
Syntax error: Expected "(" or keyword SELECT or keyword WITH but got identifier "EXTERNAL_QUERY" at [3:9]

我的查询如下所示。

代码语言:javascript
复制
MERGE bigquery_dataset.bigquery_table TARGET
USING (
    EXTERNAL_QUERY("projects/company-co/locations/us/connections/company","SELECT * FROM postgres_schema.postgres_table")
        ) SOURCE

ON target.id = source.id

WHEN MATCHED THEN ...
WHEN NOT MATCHED BY TARGET THEN ...
WHEN NOT MATCHED BY SOURCE THEN ...

对于这类功能,有什么已知的解决办法吗?或者有没有其他方法来执行这种类型的合并?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-27 09:24:51

根据您的要求,如果您想在EXTERNAL_QUERY中的外部数据源位于PostgreSQL实例的BigQuery中运行联邦查询,则需要使用SQL函数即PostgreSQL定义源数据集。

您所得到的错误:“语法错误:预期"(”或关键字SELECT或关键字带有但得到标识符" EXTERNAL_QUERY“在3:9”是因为您在EXTERNAL_QUERY之前遗漏了SELECT语句。

根据这个文档,语法应该是:

代码语言:javascript
复制
SELECT * FROM EXTERNAL_QUERY(connection_id, external_database_query[, options]);

我试着在BigQuery中运行联邦查询,其中源在中,并且它正在按预期工作。

SQL查询:

代码语言:javascript
复制
MERGE myproject.demo.tab1 TARGET
USING (
  select * from EXTERNAL_QUERY("projects/myproject/locations/us-central1/connections/sqltobig", "SELECT * FROM entries;")
       ) SOURCE

ON target.entryID = source.entryID

WHEN MATCHED THEN
DELETE

WHEN NOT MATCHED THEN
INSERT(guestName, content, entryID)
VALUES(guestName, content, entryID)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69340240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档