使用联合查询将 bigquery table 与 google cloud postgres table 合并
Merge bigquery table with google cloud postgres table with federated query
我正在尝试将 bigquery table(目标)与 google 云 postgres table(源)与联合查询合并。但是,bigquery 似乎不接受“using”子句中的联合查询。
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 ...
此类功能是否有任何已知的解决方法?或者还有其他方法可以执行这种类型的合并吗?
根据您的要求,如果您希望在外部数据源位于 Cloud PostgreSQL 实例的 BigQuery 中 运行 联合查询,您需要使用 SQL 函数即 EXTERNAL_QUERY
您收到的错误:“语法错误:应为“(”或关键字 SELECT 或关键字 WITH 但在 [3:9] 处获得了标识符“EXTERNAL_QUERY” ” 是因为您在 EXTERNAL_QUERY.
之前遗漏了 SELECT 语句
根据这个doc,语法应该是:
SELECT * FROM EXTERNAL_QUERY(connection_id, external_database_query[, options]);
我尝试 运行在 BigQuery 中使用联合查询,其中源在 Cloud PostgreSQL 中,它按预期工作。
SQL 查询:
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)
我正在尝试将 bigquery table(目标)与 google 云 postgres table(源)与联合查询合并。但是,bigquery 似乎不接受“using”子句中的联合查询。
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 ...
此类功能是否有任何已知的解决方法?或者还有其他方法可以执行这种类型的合并吗?
根据您的要求,如果您希望在外部数据源位于 Cloud PostgreSQL 实例的 BigQuery 中 运行 联合查询,您需要使用 SQL 函数即 EXTERNAL_QUERY
您收到的错误:“语法错误:应为“(”或关键字 SELECT 或关键字 WITH 但在 [3:9] 处获得了标识符“EXTERNAL_QUERY” ” 是因为您在 EXTERNAL_QUERY.
之前遗漏了 SELECT 语句根据这个doc,语法应该是:
SELECT * FROM EXTERNAL_QUERY(connection_id, external_database_query[, options]);
我尝试 运行在 BigQuery 中使用联合查询,其中源在 Cloud PostgreSQL 中,它按预期工作。
SQL 查询:
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)