使用PyBigquery筛选结果的SQLAlchemy联接

使用PyBigquery筛选结果的SQLAlchemy联接,sqlalchemy,google-bigquery,pybigquery,Sqlalchemy,Google Bigquery,Pybigquery,使用SQLAlchemy类,我试图生成一个类似 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()的隐式连接,我不知道如何构造我的语句 结合使用.l

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

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中

比如说,

session.query(Table.non_unique_key).filter(func.unnest(Table.dns) != '').filter(Table.create_date == "2021-04-22")
留给我

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,我也会认为这应该是一种比较常见的查询模式?

经过进一步的挖掘,我已经找到了答案

Model()