错误图像我正在使用GCP BigQuery的EXTERNAL_QUERY函数。其思想是从两个单独的GCP扳手数据库中检索数据,并在一个大型SQL查询中处理这些数据。EXTERNAL_QUERY函数将这个外部数据提供给主查询(EXTERNAL_QUERY("",""))。主要查询执行从选择数据开始到临时表,然后在EXTERNAL_QUERY的第二个参数中引用这个临时表。但是这种方法不起作用,因为我作为字符串提供给EXTERNAL_QUERY的SQL查询不能使用任何临时表。那么,在EXTERNAL_QUERY函数中引用临时表是可能的吗?
我在GCP码头上没有发现任何关于这个问题的东西。当然,我可以从外部表中检索所有行并处理这些数据,但是这种方法并不有效。
发布于 2022-04-01 21:18:26
你能用BigQuery来完成这一切吗?
WITH transactions as (
SELECT user_id
FROM EXTERNAL_QUERY("connection_string",
"SELECT user_id, id FROM transactions")
),
das as (
SELECT user_id
FROM EXTERNAL_QUERY("connection_string",
"SELECT user_id FROM destination_accounts WHERE status = 'PENDING'"
)
)
SELECT
user_id,
COUNT(DISTINCT transactions.id)
FROM
das
JOIN
transactions
USING
(user_id)
GROUP BY
user_id;
您的外部事务查询是在GCP扳手上执行的,因此它对das
一无所知。
发布于 2022-10-25 10:55:59
据我所知,没有办法从不同的数据库链接表。我们所能做的就是操纵字符串。
这是我的解决方案。
如下所示:
BEGIN
DECLARE USER_IDS STRING;
DECLARE SELECT_TRANSACTIONS_QUERY STRING;
CREATE TEMP TABLE users AS
SELECT userId FROM EXTERNAL_QUERY(
"projects/<project>/locations/<location>/connections/<connection>",
"SELECT userId FROM users;"
);
SET USER_IDS = CONCAT("'", ARRAY_TO_STRING(ARRAY(SELECT userId FROM users), "', '"), "'");
SET SELECT_TRANSACTIONS_QUERY = CONCAT('SELECT * FROM transactions WHERE userId IN(', USER_IDS, ')');
EXECUTE IMMEDIATE
"""
SELECT * FROM EXTERNAL_QUERY("projects/<project>/locations/<location>/connections/<connection>", ?);
"""
USING SELECT_TRANSACTIONS_QUERY;
END;
所有这些都可以保存为一个过程,并由后端的名称触发。
https://stackoverflow.com/questions/71708737
复制相似问题