首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyBigquery过滤结果的SQLAlchemy连接

使用PyBigquery过滤结果的SQLAlchemy连接
EN

Stack Overflow用户
提问于 2021-04-29 01:15:53
回答 1查看 57关注 0票数 1

使用SQLAlchemy类,我尝试生成一个类似于

代码语言:javascript
复制
SELECT
  DISTINCT(non_unique_key)
FROM
  `tablename`,
  UNNEST(tasks_dns) AS dns
WHERE
  create_date_utc = TIMESTAMP("2020-12-31T23:59:59")
  AND dns LIKE "%whatever%"

作为一个使用unnest()的隐式连接,我不知道如何构造我的语句。

结合使用.label()和移动unnest()调用,我已经成功地将unnest子句移动到SELECT或WHERE子句,但不是在FROM子句中。

例如,

代码语言:javascript
复制
session.query(Table.non_unique_key).filter(func.unnest(Table.dns) != '').filter(Table.create_date == "2021-04-22")

留给我的是

代码语言:javascript
复制
SELECT `tablename`.`non_unique_key` AS `tablename_non_unique_key` 
FROM `tablename` 
WHERE unnest(`tablename`.`tasks_dns`) IS NOT NULL AND `tablename`.`create_date_utc` = %(create_date_utc_1)s

到目前为止,使用join()只是导致了没有可连接的列的异常(虽然是,但我理解这是什么意思,我不确定如何解决这一问题,因为unnest基本上是对没有可连接的列的嵌套数据类型进行扩展。这可能是我不知道如何正确使用SQLAlchemys join()方法的原因所在)

在这一点上,这仅仅是一个SQLAlchemy / BigQuery方言问题吗?还是我只是个笨蛋?我知道方言库还处于起步阶段,但即使使用Postgres,我也会认为这应该是一种比较常见的查询模式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-13 09:26:28

经过一些额外的挖掘,我已经弄清楚了

Model().query().select_from(func.unnest(Model.col1).alias("whatever")).filter()....

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

https://stackoverflow.com/questions/67304919

复制
相关文章

相似问题

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