首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Postgre转换为Bigquery

将Postgre转换为Bigquery
EN

Stack Overflow用户
提问于 2020-02-18 23:00:43
回答 1查看 151关注 0票数 0

我在从Postgre到Bigquery查询的转换中遇到了问题。

请告诉我,这个查询如何在bigquery上工作?我需要再选择一个表并带上最后一个寄存器

代码语言:javascript
复制
(select g.fase__c
from operacoes.salesforce_gest_o_do_canal_c_full g
where g.n_de_indentifica_o_do_parceiro__c = a.n_de_indentifica_o_do_parceiro__c
order by g.data_do_credenciamento__c limit 1)  as fase_jornada

from operacoes.salesforce_account_full

如果我尝试执行,Bigquery会返回一个错误:我应该应用联接,如果我应用联接,order by将不起作用

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 00:13:21

相关的子查询(它是引用外部查询的表的子查询)如果“按原样”执行,将需要为外部查询的结果的每一行计算子查询,这将不是很有效。

为了优化这一点,BigQuery首先将查询转换(解除相关)为在功能上与相关查询等效的查询,但查询和子查询之间没有任何相关性。不同的用例需要不同的解相关过程,它们可能非常复杂,难以实现和适当测试。

BigQuery正在实现去相关策略,以使各种correlated subqueries成为可能,但是LIMIT子句的去相关还没有实现。

一种解决方法是使用ARRAY_AGG而不是子查询。在您的例子中,我相信下面的查询可以完成这项工作:

代码语言:javascript
复制
SELECT
  ARRAY_AGG(g.fase__c
    ORDER BY g.data_do_credenciamento__c
    LIMIT 1) AS fase_jornada
FROM
  operacoes.salesforce_account_full a
JOIN
  operacoes.salesforce_gest_o_do_canal_c_full g
ON
  g.n_de_indentifica_o_do_parceiro__c = a.n_de_indentifica_o_do_parceiro__c
GROUP BY
  g.n_de_indentifica_o_do_parceiro__c

考虑到我已经猜到了一些细节,因为没有提供子查询的整个上下文,所以您可能需要对其进行一些更改。

如果有什么不清楚的地方,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60283779

复制
相关文章

相似问题

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