合并bigquery表和google cloud postgres表和联邦查询



我试图合并一个bigquery表(目标)与谷歌云postgres表(源)与联邦查询。然而,看起来bigquery不接受使用""的联邦查询。条款。

Syntax error: Expected "(" or keyword SELECT or keyword WITH but got identifier "EXTERNAL_QUERY" at [3:9]

我的查询如下所示。

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 ...

对于这种类型的功能是否有已知的变通方法?或者是否有其他方法来执行这种类型的合并?

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

"语法错误:Expected "("或关键字SELECT或关键字WITH,但有标识符"EXTERNAL_QUERY"在[3:9]">这是因为你遗漏了EXTERNAL_QUERY之前的SELECT语句。

按照这个文档,语法应该是:

SELECT * FROM EXTERNAL_QUERY(connection_id, external_database_query[, options]);

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

SQL QUERY:
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)

最新更新